Percorso dei simboli per i debugger di Windows

Il percorso del simbolo specifica i percorsi in cui i debugger di Windows, ad esempio WinDbg, KD, CDB e NTST, cercano i file di simboli. Per altre informazioni sui simboli e sui file di simboli, vedere Simboli.

Alcuni compilatori, inclusi Microsoft Visual Studio, inseriscono i file di simboli nella stessa directory dei file binari. I file di simboli e i file binari controllati contengono informazioni sul percorso e sul nome file, che consentono al debugger di trovare automaticamente i file di simboli. Se si esegue il debug di un processo in modalità utente nel computer in cui è stato compilato il file eseguibile e se i file di simboli si trovano nel percorso originale, il debugger può individuare i file di simboli senza impostare il percorso del simbolo.

Nella maggior parte delle altre situazioni, è necessario impostare il percorso del simbolo per puntare alle posizioni dei file di simboli.

Suggerimento

Usare il prefisso .symfix per impostare un percorso predefinito sul server di simboli pubblico Microsoft pubblico che funziona bene in molte situazioni.

Sintassi del percorso dei simboli

Il percorso del simbolo del debugger è una stringa costituita da più percorsi di directory separati da punti e virgola. Ad esempio: C:\Dir1;C:\Dir2\DirA;C:\Dir2\DirB.

I percorsi relativi sono supportati. Tuttavia, è necessario aggiungere una lettera di unità o una condivisione di rete prima di ogni percorso, a meno che non si avvia sempre il debugger dalla stessa directory. Sono supportate anche le condivisioni di rete.

Per ogni directory nel percorso del simbolo, il debugger cerca tre directory. Ad esempio, se il percorso del simbolo include C:\Dir1 e il debugger cerca informazioni sui simboli per una DLL, il debugger cerca informazioni sui simboli nelle directory seguenti, elencate in ordine:

  • C:\Dir1\symbols\dll
  • C:\Dir1\dll
  • C:\Dir1

Il debugger ripete quindi questo processo per ogni directory nel percorso del simbolo. Infine, il debugger cerca nella directory corrente e quindi nella directory corrente con ..\dll accodamento. Il debugger aggiunge ..\dll, ..\exeo ..\sys, a seconda dei file binari che esegue il debug.

I file di simboli hanno indicatori di data e ora. Il debugger cerca sempre i simboli che corrispondono al timestamp nei file binari che esegue il debug. Non è necessario preoccuparsi del debugger usando i simboli sbagliati che trova prima in questa sequenza. Per altre informazioni sulle risposte quando i file di simboli non sono disponibili, vedere Nomi dei simboli corrispondenti.

Un modo per impostare il percorso del simbolo è immettendo il comando con estensione sympath. Per altri modi per impostare il percorso del simbolo, vedere Controllare il percorso del simbolo più avanti in questo argomento.

Simboli della cache in locale

È consigliabile memorizzare nella cache i simboli in locale. Un modo per memorizzare nella cache i simboli in locale consiste nell'includere cache*; o cache*localsymbolcache;* nel percorso del simbolo.

Se si include la stringa nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa cache*; vengono archiviati nella directory della cache dei simboli predefinita nel computer locale. Ad esempio, il comando seguente indica al debugger di ottenere simboli dalla condivisione di rete denominata \\someshare e memorizzare nella cache i simboli nel percorso predefinito nel computer locale.

.sympath cache*;\\someshare

Se si include la stringa nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa cache*localsymbolcache; vengono archiviati nella directory localymbolcache .

Ad esempio, il comando seguente indica al debugger di ottenere simboli dalla condivisione \\someshare di rete e memorizzare nella cache i simboli nella c:\MySymbols directory.

.sympath cache*C:\MySymbols;\\someshare

Uso di un server di simboli: srv*

Se si è connessi a Internet o a una rete aziendale, il modo più efficiente per accedere ai simboli consiste nell'usare un server simboli, ad esempio il server di simboli pubblico Microsoft pubblico pubblico. È possibile usare un server simboli usando una delle stringhe seguenti nel percorso del simbolo.

  • Stringa srv*

    Se si include la stringa srv* nel percorso del simbolo, il debugger usa un server di simboli per ottenere i simboli dall'archivio simboli predefinito. Ad esempio, il comando seguente indica al debugger di ottenere simboli dall'archivio simboli predefinito. Questi simboli non vengono memorizzati nella cache nel computer locale.

    .sympath srv*
    
  • Stringa srv*symbolstore

    Se si include la stringa srv*symbolstore nel percorso del simbolo, il debugger usa un server di simboli per ottenere simboli dall'archivio simboli. Ad esempio, il comando seguente indica al debugger di ottenere simboli dall'archivio server simboli Microsoft . Questi simboli non vengono memorizzati nella cache nel computer locale.

    .sympath srv*https://msdl.microsoft.com/download/symbols
    
  • Stringa srv*localsymbolcache*symbolstore

    Se si include la stringa srv*localcache*symbolstore nel percorso del simbolo, il debugger usa un server di simboli per ottenere simboli dall'archivio simboli e li memorizza nella cache nella directory localcache . Ad esempio, il comando seguente indica al debugger di ottenere simboli dall'archivio server simboli Microsoft e memorizzare nella cache i simboli in c:\MyServerSymbols.

    .sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
    

Se si dispone di una directory nel computer in cui si inseriscono manualmente i simboli, non usare tale directory come cache per i simboli ottenuti da un server di simboli. Usare invece due directory separate. Ad esempio, è possibile posizionare manualmente i simboli in c:\MyRegularSymbols e quindi designare c:\MyServerSymbols come cache per i simboli ottenuti da un server. Nell'esempio seguente viene illustrato come specificare entrambe le directory nel percorso del simbolo.

.sympath C:\MyRegularSymbols;srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols

Per altre informazioni sui server dei simboli e sugli archivi simboli, vedere Archivi simboli personalizzati e server simboli.

Combinare cache* e srv*

Se si include la stringa nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa cache*; vengono archiviati nella directory della cache dei simboli predefinita nel computer locale. Ad esempio, il comando seguente indica al debugger di ottenere simboli dall'archivio del server simboli Microsoft e memorizzarli nella cache dei simboli predefinita.

.sympath cache*;srv*https://msdl.microsoft.com/download/symbols

Se si include la stringa nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa cache*localsymbolcache; vengono archiviati nella directory localymbolcache .

Ad esempio, il comando seguente indica al debugger di ottenere simboli dall'archivio server simboli Microsoft e memorizzare nella cache i simboli nella c:\MySymbols directory.

.sympath cache*C:\MySymbols;srv*https://msdl.microsoft.com/download/symbols

Usare AgeStore per ridurre le dimensioni della cache

È possibile usare lo strumento AgeStore per eliminare i file memorizzati nella cache precedenti a una data specificata o eliminare file precedenti sufficienti in modo che le dimensioni della cache risultanti siano inferiori a una quantità specificata. Questa pulizia dei file di cache è utile se l'archivio downstream diventa troppo grande.

Caricamento di simboli lazy

Il comportamento predefinito del debugger consiste nell'usare il caricamento dei simboli lazy, noto anche come caricamento di simboli posticipati. Questo tipo di caricamento significa che i simboli non vengono caricati finché non sono necessari.

Quando il percorso del simbolo viene modificato, ad esempio usando il comando con estensione sympath, tutti i moduli caricati con simboli di esportazione vengono ricaricati in modo ritardato.

I simboli dei moduli con simboli PDB completi vengono ricaricati in modo ritardato se il nuovo percorso non include più il percorso originale usato per caricare i simboli PDB . Se il nuovo percorso include ancora il percorso originale del file di simboli PDB, tali simboli non vengono ricaricati in modo ritardato.

È possibile disattivare il caricamento dei simboli lazy in CDB e KD usando l'opzione della riga di comando -s. È anche possibile forzare il caricamento dei simboli usando il comando simboli di caricamento ld oppure usando il comando del modulo di ricaricamento insieme all'opzione /f .

Azure DevOps Services artefatti

Un server di simboli è disponibile con Gli artefatti di Azure in Azure DevOps Services. Per informazioni sull'uso degli artefatti di Azure in WinDbg, vedere Eseguire il debug con i simboli in WinDbg. Per informazioni generali sui simboli generati da Azure, vedere Panoramica dei simboli.

Controllare il percorso del simbolo

Per controllare il percorso del simbolo, è possibile selezionare uno dei metodi seguenti:

  • Usare il comando del percorso dell'archivio simboli con estensione symfix per impostare un percorso predefinito sul server di simboli Microsoft pubblico che funziona bene in molte situazioni. Per impostare una cache locale, digitare .symfix C:\MyCachesolo .

  • Usare il comando con estensione sympath per visualizzare, impostare, modificare o aggiungere al percorso.

  • Prima di avviare il debugger, usare le _NT_SYMBOL_PATHvariabili di ambiente e _NT_ALT_SYMBOL_PATH per impostare il percorso. Il percorso del simbolo viene creato aggiungendo _NT_SYMBOL_PATH dopo _NT_ALT_SYMBOL_PATH. In genere, il percorso viene impostato tramite ._NT_SYMBOL_PATH Tuttavia, è possibile usare _NT_ALT_SYMBOL_PATH per eseguire l'override di queste impostazioni in casi speciali, ad esempio se si dispone di versioni private dei file di simboli condivisi. Se si tenta di aggiungere una directory non valida tramite queste variabili di ambiente, il debugger ignora questa directory.

  • Quando si avvia il debugger, usare l'opzione della riga di comando -y per impostare il percorso.

  • Solo in WinDbg è possibile usare il file | Comando Percorso file simbolo o premere CTRL+S per visualizzare, impostare, modificare o aggiungere al percorso.

Se si usa l'opzione della riga di comando -sins, il debugger ignora la variabile di ambiente del percorso dei simboli.

Risoluzione dei problemi

Usare !sym rumoroso o l'opzione -nWinDbg Command-Line per visualizzare altri dettagli come simboli vengono caricati. Per altre strategie di risoluzione dei problemi, vedere Verifica dei simboli.

Vedi anche

Uso avanzato di SymSrv