Share via


Uso di SymSrv

SymSrv fornisce file di simboli da archivi di simboli centralizzati. Questi archivi possono contenere un numero qualsiasi di file di simboli, corrispondenti a un numero qualsiasi di programmi o sistemi operativi. Gli archivi possono anche contenere file binari, particolarmente utili durante il debug di file minidump.

Gli archivi possono contenere i file di simboli e binari effettivi o semplicemente puntatori ai file di simboli. Se l'archivio contiene puntatori, SymSrv recupererà i file effettivi direttamente dalle origini.

SymSrv può anche separare un archivio di simboli di grandi dimensioni in un subset più piccolo appropriato per un'attività di debug specializzata.

Infine, SymSrv può ottenere i file di simboli da un'origine HTTP o HTTPS usando le informazioni di accesso fornite dal sistema operativo. SymSrv supporta siti HTTPS protetti da smart card, certificati e normali account di accesso e password.

Impostazione del percorso del simbolo

Come descritto in Percorsi simboli, il percorso del simbolo (_NT_SYMBOL_PATH variabile di ambiente) può essere costituito da diversi elementi di percorso separati da punti e virgola. Se uno o più di questi elementi di percorso iniziano con il testo "srv*", l'elemento è un server di simboli e userà SymSrv per individuare i file di simboli.

Nota

Se il testo "srv*" non viene specificato ma l'elemento path effettivo è un archivio server dei simboli, il gestore dei simboli fungerà da se fosse specificato "srv*". Il gestore dei simboli determina questa determinazione cercando l'esistenza di un file denominato "pingme.txt" nella directory radice del percorso specificato.

 

Proprio come i percorsi dei simboli sono costituiti da elementi di percorso simbolo separati da punto e virgola, i server simboli sono costituiti da elementi dell'archivio simboli separati da asterischi. Dopo il prefisso "srv*" possono essere presenti fino a 10 archivi di simboli. Gli archivi elencati a sinistra dell'elenco sono denominati archivi downstream e gli archivi a destra sono denominati archivi upstream .

srv\**SymbolStore* srv\**SymbolStore1*\**SymbolStoreN*

Se nel percorso è incluso un solo elemento dell'archivio simboli, SymSrv tenterà di usare il file richiesto direttamente da tale archivio.

Se nel percorso sono presenti due archivi simboli, SymSrv cerca il file di simboli nell'archivio dei simboli più a sinistra. Se il file è presente, viene usato. Se non è presente, SymSrv cerca nell'archivio simboli immediatamente a destra. Se il file è presente, viene copiato nell'archivio sinistro e aperto da questa posizione.

Se sono presenti più di due archivi, questo comportamento continua fino a quando il file non viene trovato o non sono presenti più archivi nell'elenco.

Il file non viene mai aperto da alcun archivio, ma dall'archivio più a sinistra. Se il file viene trovato altrove nella catena, viene copiato in ogni archivio a sinistra di esso. Questo processo di copia è denominato "propagazione" e offre alcuni vantaggi che verranno espansi più avanti in questo documento.

Tipi di archivi di simboli

Nella tabella seguente vengono visualizzati esempi dei tipi di archivio simboli supportati.

Tipo di archivio simboli Descrizione
\\server\share Percorso UNC completo di una condivisione in un server remoto.
c:\LocalCache Percorso di una directory nel computer client.
https://InternetSite URL di un sito Web che ospita i simboli. Deve essere l'archivio più a destra nell'elenco e non deve essere l'unico punto vendita nell'elenco.
https://SecureInternetSite URL di un sito Web sicuro che ospita i simboli. In questo modo è possibile supportare password, credenziali di accesso di Windows, certificati e smart card. Deve essere l'archivio più a destra nell'elenco e non deve essere l'unico punto vendita nell'elenco.
<blank> Se non è presente testo tra due asterischi, indica l'archivio downstream predefinito. La posizione viene impostata chiamando SymSetHomeDirectory. Il valore predefinito è una directory denominata "sym" immediatamente sotto la directory del programma dell'applicazione chiamante. Questa operazione viene talvolta definita cache locale predefinita.

 

Poiché non è possibile scrivere un archivio simboli basato su HTTP, deve essere l'archivio più a destra nell'elenco. Se un archivio di simboli basato su HTTP si trova al centro o a sinistra dell'elenco dei negozi, non sarebbe possibile copiare i file trovati in esso e la catena verrebbe interrotta. Inoltre, poiché il gestore dei simboli non può aprire un file da un sito Web, un archivio basato su HTTP non deve essere l'archivio più a sinistra o solo l'archivio nell'elenco. Se SymSrv viene mai visualizzato con questo percorso di simbolo, tenterà di eseguire il ripristino copiando il file nell'archivio downstream predefinito e aprirlo da questa posizione, indipendentemente dal fatto che l'archivio downstream predefinito sia indicato nel percorso del simbolo.

Esempi

Per usare SymSrv con un archivio simboli in \\mybuilds\mysymbols, impostare il percorso del simbolo seguente:

set _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols

Per impostare il percorso del simbolo in modo che il debugger copia i file di simboli da un archivio simboli in \\mybuilds\mysymbols nella directory locale c:\localsymbols, usare:

set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols

Per impostare il percorso del simbolo in modo che il debugger copia i file di simboli da un archivio simboli in \\mybuilds\mysymbols all'archivio downstream predefinito (in genere c:\debuggers\sym), usare:

set _NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols

Per usare un archivio a catena, impostare il percorso del simbolo seguente:

set _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer

In questo esempio SymSrv cerca innanzitutto il file in c:\localsymbols. Se viene trovato, restituirà un percorso al file. In caso contrario, SymSrv cerca il file in \\NearbyServer\store. Se viene trovato, SymSrv copia il file in c:\localsymbols e restituisce un percorso al file; se non viene trovato, SymSrv cerca il file in https://DistantServere, se viene trovato, SymSrv copia il file in \\NearbyServer\store, quindi in c:\localsymbols.

In questo ultimo esempio viene illustrato il modo in cui è possibile usare la progettazione di un percorso simbolo per ottimizzare il download dei simboli. Se si dispone di un sito di lavoro con un gruppo di debugger e tutti devono ottenere simboli da una posizione distante, è possibile configurare un server comune con un archivio simboli vicino a tutti i debugger. Configurare quindi ogni debugger con il percorso del simbolo precedente. Il primo debugger che richiede una determinata versione di foo.pdb lo scaricherà da https://DistantServer a \\NearbyServer\store e quindi nel proprio computer in c:\localsymbols. Il debugger successivo che richiede lo stesso file sarà in grado di scaricarlo da \\NearbyServer\store perché è già stato scaricato in tale percorso dal debugger precedente. Questa memorizzazione nella cache a più livelli consente di risparmiare tempo e larghezza di banda di rete significativi.

Microsoft Symbol Store

Microsoft fornisce l'accesso a un server di simboli Internet che contiene i file di simboli per le molte versioni del sistema operativo Windows. Questo catalogo di simboli non è garantito che sia completo, ma è esteso. Sono rappresentati anche altri prodotti Microsoft.

Il server dei simboli Internet viene popolato con un'ampia gamma di simboli di Windows per i sistemi operativi Microsoft Windows, tra cui correzioni ad accesso frequente, Service Pack, Pacchetti di rollup della sicurezza e versioni di vendita al dettaglio. I simboli sono disponibili anche nel server per le versioni beta correnti e i candidati per i prodotti Windows, oltre a un'ampia gamma di altri prodotti Microsoft, ad esempio Microsoft Internet Explorer.

Se si ha accesso a Internet durante il debug, è possibile configurare il debugger per scaricare i simboli in base alle esigenze durante una sessione di debug, anziché scaricare i file di simboli separatamente prima di una sessione di debug. I simboli vengono scaricati in un percorso di directory specificato e quindi il debugger li carica da questa posizione.

L'URL dell'archivio simboli Microsoft è https://msdl.microsoft.com/download/symbols. L'esempio seguente illustra come impostare il percorso del simbolo del debugger (sostituire il percorso dell'archivio downstream per c:\DownstreamStore):

srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols

File compressi

SymSrv è compatibile con gli archivi di simboli che contengono file compressi, purché questa compressione sia stata preformata con lo strumento compress.exe distribuito con Windows Server 2003 Resource Kit. I file compressi devono avere un carattere di sottolineatura come ultimo carattere nelle relative estensioni di file( ad esempio, module1.pd_ o module2.db_). Per informazioni dettagliate, vedere Uso di SymStore.

Quando si esegue la propagazione, i file non vengono compressi a meno che l'archivio di destinazione non sia l'archivio più a sinistra nel percorso. Se nel percorso è presente un solo archivio e contiene un file compresso, SymSrv copierà il file nell'archivio downstream predefinito e lo aprirà da questa posizione, anche se l'archivio downstream predefinito non è indicato nel percorso del simbolo.

DbgHelp 6.1 e versioni precedenti. Se i file nell'archivio master sono compressi, è necessario usare un archivio downstream. SymSrv decomprime tutti i file prima di copiarli nell'archivio downstream.

Eliminazione della cache

Se si usa un archivio downstream come cache, è possibile eliminare questa directory in qualsiasi momento per risparmiare spazio su disco.

È possibile avere un vasto archivio simboli che include file di simboli per molti programmi diversi o versioni di Windows. Se si aggiorna la versione di Windows usata nel computer di destinazione, tutti i file di simboli memorizzati nella cache corrispondono alla versione precedente. Questi file memorizzati nella cache non saranno di ulteriore utilizzo e pertanto questo potrebbe essere un buon momento per eliminare la cache.

Gli strumenti di debug per Windows sono dotati di un'utilità denominata agestore.exe che rimuoverà in modo selettivo i file da un albero di directory, lasciando i file usati più di recente. Questo strumento è progettato per eliminare i file inutilizzati dagli archivi server di simboli. Consente di controllare molte opzioni, inclusi gli algoritmi di dimensioni della directory e della data di taglio.

Flat Cache Directory

È possibile dichiarare l'archivio downstream predefinito come directory flat, anziché una struttura ad albero dei simboli standard. A tale scopo, chiamare la funzione SymSetOptions con SYMOPT_FLAT_DIRECTORY (imposta anche l'opzione SSRVOPT_FLAT_DEFAULT_STORE in SymSrv). Assicurarsi di chiamare SymSetHomeDirectory prima di farlo. In caso contrario, i file di simboli possono essere scritti nella directory del programma.

File puntatore

SymStore può creare e usare file che puntano a un file di destinazione anziché al file di destinazione stesso. Se un archivio di simboli contiene un file di puntatore di questo tipo, l'impostazione predefinita consiste nel copiare il file dal percorso indicato nel file del puntatore all'archivio. Per configurare un archivio in modo che il file del puntatore venga copiato anziché il file a cui punta, creare un file denominato wantsptr.txt nella radice dell'archivio di destinazione. Il contenuto di wantsptr.txt non è importante, ma solo la presenza del file.

Esclusione di file dall'elenco dei simboli

Per escludere i file da una ricerca di simboli, è possibile specificare i relativi nomi in symsrv.ini o nel Registro di sistema. Per specificare i file in symsrv.ini, creare una sezione denominata Esclusioni ed elencare i file. I nomi di file possono contenere caratteri jolly, come illustrato nell'esempio seguente:

[Exclusions]
dbghelp.pdb
symsrv.*
mso*

Symsrv.ini deve trovarsi nella stessa directory in cui risiede symsrv.dll. Nella maggior parte delle installazioni il file non esiste ed è necessario crearne uno nuovo.

In alternativa, è possibile archiviare i file da escludere nel Registro di sistema. Creare la chiave del Registro di sistema seguente: HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. Archiviare ogni nome file come valore stringa (REG_SZ) all'interno di questa chiave. Il nome del valore stringa specifica il nome del file da escludere. È possibile usare il contenuto del valore stringa per archiviare un commento che descrive il motivo per cui il file viene escluso.

Installazione

Il server dei simboli SymSrv (symsrv.dll) è incluso nel pacchetto Strumenti di debug per Windows. Deve essere installato nella stessa directory della copia di dbghelp.dll che si stanno caricando. Per altre informazioni, vedere Chiamata alla libreria DbgHelp.