Percorso dei simboli per i debugger 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, tra cui 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 del file, che consente 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 l'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 in modo che punti ai percorsi dei file di simboli.
Suggerimento
Usare con estensione symfix per impostare un percorso predefinito sul server dei simboli pubblico Microsoft pubblico pubblico che funziona correttamente in molte situazioni.
Sintassi del percorso dei simboli
Il percorso del simbolo del debugger è una stringa costituita da più percorsi di directory separati da punto 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 avvii 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 le 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
accodato. Il debugger aggiunge ..\dll
, ..\exe
o ..\sys
, a seconda dei file binari di cui 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 di cui esegue il debug. Non è necessario preoccuparsi del debugger usando i simboli errati trovati per primi in questa sequenza. Per altre informazioni sulle risposte quando i file di simboli non sono disponibili, vedere Corrispondenza dei nomi dei simboli.
Un modo per impostare il percorso del simbolo consiste nell'immettere 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.
Memorizzare nella cache i simboli in locale
I simboli devono essere memorizzati nella cache 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 cache*;
nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa vengono archiviati nella directory predefinita della cache dei simboli nel computer locale. Ad esempio, il comando seguente indica al debugger di ottenere i 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 cache*localsymbolcache;
nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa vengono archiviati nella directory localsymbolcache .
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 di simboli, ad esempio il server di simboli pubblico Microsoft pubblico pubblico. È possibile usare un server di 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 i simboli dall'archivio dei 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 i simboli dall'archivio simboli. Ad esempio, il comando seguente indica al debugger di ottenere i simboli dall'archivio del server dei 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 i simboli dall'archivio simboli e li memorizza nella directory localcache . Ad esempio, il comando seguente indica al debugger di ottenere i simboli dal serverhttps://msdl.microsoft.com/download/symbols
dei simboli Microsoft e memorizzare nella cache i simboli inc:\MyServerSymbols
..sympath srv*C:\MyServerSymbols*https://msdl.microsoft.com/download/symbols
Se nel computer è presente una directory in cui si posizionano 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 inserire 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 di simboli e sugli archivi simboli, vedere Archivi simboli personalizzati e server di simboli.
Combinare cache* e srv*
Se si include la stringa cache*;
nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa vengono archiviati nella directory predefinita della cache dei simboli nel computer locale. Ad esempio, il comando seguente indica al debugger di ottenere i simboli dall'archivio del server dei simboli Microsoft e memorizzarli nella directory predefinita della cache dei simboli.
.sympath cache*;srv*https://msdl.microsoft.com/download/symbols
Se si include la stringa cache*localsymbolcache;
nel percorso del simbolo, i simboli caricati da qualsiasi elemento visualizzato a destra di questa stringa vengono archiviati nella directory localsymbolcache .
Ad esempio, il comando seguente indica al debugger di ottenere i simboli dall'archivio del server dei 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 più vecchi di una data specificata o per eliminare file abbastanza vecchi in modo che le dimensioni della cache risultanti siano inferiori a una quantità specificata. Questa pulizia dei file della cache è utile se l'archivio downstream è troppo grande.
Caricamento di simboli lazy
Il comportamento predefinito del debugger consiste nell'usare il caricamento di simboli lazy, noto anche come caricamento posticipato dei simboli. 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 differinte.
I simboli dei moduli con simboli PDB completi vengono ricaricati in modo differito 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 differito.
È possibile disattivare il caricamento di simboli lazy in CDB e KD usando l'opzione della riga di comando -s. È anche possibile forzare il caricamento dei simboli usando il comando ld load symbols oppure usando il comando del modulo .reload insieme all'opzione /f
.
Azure DevOps Services artefatti
Un server di simboli è disponibile con Azure Artifacts in Azure DevOps Services. Per informazioni sull'uso di Azure Artifacts 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 .symfix set symbol store path per impostare un percorso predefinito sul server dei simboli Microsoft pubblico che funziona bene in molte situazioni. Per impostare una cache locale, digitare
.symfix C:\MyCache
semplicemente .Usare il comando con estensione sympath per visualizzare, impostare, modificare o aggiungere al percorso.
Prima di avviare il debugger, usare le
_NT_SYMBOL_PATH
variabili 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
Usa !sym noisy o l'opzione -nWinDbg Command-Line per visualizzare dettagli aggiuntivi quando vengono caricati i simboli. Per altre strategie di risoluzione dei problemi, vedere Verifica dei simboli.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per