Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
SymStore usa il file system stesso come database. Crea un albero di grandi dimensioni di directory, con nomi di directory basati su elementi quali timestamp dei file di simboli, firme, età e altri dati.
Ad esempio, dopo l'aggiunta di diversi acpi.dbgs al server, le directory potrebbero avere un aspetto simile al seguente:
Directory of \\mybuilds\symsrv\acpi.dbg
10/06/1999 05:46p <DIR> .
10/06/1999 05:46p <DIR> ..
10/04/1999 01:54p <DIR> 37cdb03962040
10/04/1999 01:49p <DIR> 37cdb04027740
10/04/1999 12:56p <DIR> 37e3eb1c62060
10/04/1999 12:51p <DIR> 37e3ebcc27760
10/04/1999 12:45p <DIR> 37ed151662060
10/04/1999 12:39p <DIR> 37ed15dd27760
10/04/1999 11:33a <DIR> 37f03ce962020
10/04/1999 11:21a <DIR> 37f03cf7277c0
10/06/1999 05:38p <DIR> 37fa7f00277e0
10/06/1999 05:46p <DIR> 37fa7f01620a0
In questo esempio il percorso di ricerca per il file di simboli acpi.dbg potrebbe essere simile al seguente: \\mybuilds\symsrv\acpi.dbg\37cdb03962040.
È possibile che esistano tre file all'interno della directory di ricerca:
acpi.dbg, se il file è stato archiviato
file.ptr con il percorso effettivo del file di simboli, se un puntatore è stato memorizzato.
refs.ptr, che contiene un elenco di tutte le posizioni correnti per acpi.dbg con questo timestamp e dimensione d'immagine, che sono attualmente aggiunti all'archivio dei simboli
La visualizzazione dell'elenco di directory \\mybuilds\symsrv\acpi.dbg\37cdb03962040 fornisce quanto segue:
10/04/1999 01:54p 52 file.ptr
10/04/1999 01:54p 67 refs.ptr
Il file.ptr contiene la stringa di testo "\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg". Poiché in questa directory non è presente alcun file denominato acpi.dbg, il debugger tenterà di trovare il file in \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg.
Il contenuto di refs.ptr viene usato solo da SymStore, non dal debugger. Questo file contiene un record di tutte le transazioni eseguite in questa directory. Una riga di esempio da refs.ptr potrebbe essere:
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg
Ciò mostra che un puntatore a \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg è stato aggiunto con la transazione "0000000026".
Alcuni file di simboli rimangono costanti attraverso vari prodotti o compilazioni o un particolare prodotto. Un esempio di questo è il file di Windows 2000 msvcrt.pdb. Un elenco di directory di \\mybuilds\symsrv\msvcrt.pdb mostra che al server dei simboli sono state aggiunte solo due versioni di msvcrt.pdb:
Directory of \\mybuilds\symsrv\msvcrt.pdb
10/06/1999 05:37p <DIR> .
10/06/1999 05:37p <DIR> ..
10/04/1999 11:19a <DIR> 37a8f40e2
10/06/1999 05:37p <DIR> 37f2c2272
Tuttavia, un elenco di directory di \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 mostra che refs.ptr contiene diversi puntatori.
Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999 02:50p 54 file.ptr
10/05/1999 02:50p 2,039 refs.ptr
Il contenuto di \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr è il seguente:
0000000001,ptr,\\mybuilds\symbols\x86\2137\symbols\dll\msvcrt.pdb
0000000002,ptr,\\mybuilds\symbols\x86\2137.chk\symbols\dll\msvcrt.pdb
0000000003,ptr,\\mybuilds\symbols\x86\2138\symbols\dll\msvcrt.pdb
0000000004,ptr,\\mybuilds\symbols\x86\2138.chk\symbols\dll\msvcrt.pdb
0000000005,ptr,\\mybuilds\symbols\x86\2139\symbols\dll\msvcrt.pdb
0000000006,ptr,\\mybuilds\symbols\x86\2139.chk\symbols\dll\msvcrt.pdb
0000000007,ptr,\\mybuilds\symbols\x86\2140\symbols\dll\msvcrt.pdb
0000000008,ptr,\\mybuilds\symbols\x86\2140.chk\symbols\dll\msvcrt.pdb
0000000009,ptr,\\mybuilds\symbols\x86\2136\symbols\dll\msvcrt.pdb
0000000010,ptr,\\mybuilds\symbols\x86\2136.chk\symbols\dll\msvcrt.pdb
0000000011,ptr,\\mybuilds\symbols\x86\2135\symbols\dll\msvcrt.pdb
0000000012,ptr,\\mybuilds\symbols\x86\2135.chk\symbols\dll\msvcrt.pdb
0000000013,ptr,\\mybuilds\symbols\x86\2134\symbols\dll\msvcrt.pdb
0000000014,ptr,\\mybuilds\symbols\x86\2134.chk\symbols\dll\msvcrt.pdb
0000000015,ptr,\\mybuilds\symbols\x86\2133\symbols\dll\msvcrt.pdb
0000000016,ptr,\\mybuilds\symbols\x86\2133.chk\symbols\dll\msvcrt.pdb
0000000017,ptr,\\mybuilds\symbols\x86\2132\symbols\dll\msvcrt.pdb
0000000018,ptr,\\mybuilds\symbols\x86\2132.chk\symbols\dll\msvcrt.pdb
0000000019,ptr,\\mybuilds\symbols\x86\2131\symbols\dll\msvcrt.pdb
0000000020,ptr,\\mybuilds\symbols\x86\2131.chk\symbols\dll\msvcrt.pdb
0000000021,ptr,\\mybuilds\symbols\x86\2130\symbols\dll\msvcrt.pdb
0000000022,ptr,\\mybuilds\symbols\x86\2130.chk\symbols\dll\msvcrt.pdb
0000000023,ptr,\\mybuilds\symbols\x86\2129\symbols\dll\msvcrt.pdb
0000000024,ptr,\\mybuilds\symbols\x86\2129.chk\symbols\dll\msvcrt.pdb
0000000025,ptr,\\mybuilds\symbols\x86\2128\symbols\dll\msvcrt.pdb
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\dll\msvcrt.pdb
0000000027,ptr,\\mybuilds\symbols\x86\2141\symbols\dll\msvcrt.pdb
0000000028,ptr,\\mybuilds\symbols\x86\2141.chk\symbols\dll\msvcrt.pdb
0000000029,ptr,\\mybuilds\symbols\x86\2142\symbols\dll\msvcrt.pdb
0000000030,ptr,\\mybuilds\symbols\x86\2142.chk\symbols\dll\msvcrt.pdb
Ciò mostra che lo stesso msvcrt.pdb è stato usato per più build di simboli per Windows 2000 archiviato in \\mybuilds\symsrv.
Di seguito è riportato un esempio di directory che contiene una combinazione di aggiunte di file e puntatori:
Directory of E:\symsrv\dbghelp.dbg\38039ff439000
10/12/1999 01:54p 141,232 dbghelp.dbg
10/13/1999 04:57p 49 file.ptr
10/13/1999 04:57p 306 refs.ptr
In questo caso, refs.ptr ha il contenuto seguente:
0000000043,file,e:\binaries\symbols\retail\dll\dbghelp.dbg
0000000044,file,f:\binaries\symbols\retail\dll\dbghelp.dbg
0000000045,file,g:\binaries\symbols\retail\dll\dbghelp.dbg
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg
Pertanto, le transazioni 43, 44 e 45 hanno aggiunto lo stesso file al server, e le transazioni 46 e 47 hanno aggiunto puntatori. Se le transazioni 43, 44 e 45 vengono eliminate, il file dbghelp.dbg verrà eliminato dalla directory. La directory avrà quindi il contenuto seguente:
Directory of e:\symsrv\dbghelp.dbg\38039ff439000
10/13/1999 05:01p 49 file.ptr
10/13/1999 05:01p 130 refs.ptr
File.ptr contiene ora "\\foo2\bin\symbols\retail\dll\dbghelp.dbg" e refs.ptr contiene
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg
Ogni volta che la voce finale in refs.ptr è un puntatore, il file.ptr esisterà e conterrà il percorso del file associato. Ogni volta che la voce finale in refs.ptr è un file, non esisterà alcun file.ptr in questa directory. Pertanto, qualsiasi operazione di eliminazione che rimuove la voce finale in refs.ptr può comportare la creazione, l'eliminazione o la modifica di file.ptr.