Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
SymStore utilise le système de fichiers lui-même comme base de données. Il crée une grande arborescence de répertoires, avec des noms de répertoires basés sur des éléments tels que les horodatages du fichier de symboles, les signatures, l’âge et d’autres données.
Par exemple, une fois que plusieurs acpi.dbgs différents ont été ajoutés au serveur, les répertoires peuvent ressembler à ceci :
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
Dans cet exemple, le chemin de recherche du fichier de symboles acpi.dbg peut ressembler à ceci : \\mybuilds\symsrv\acpi.dbg\37cdb03962040.
Trois fichiers peuvent exister dans le répertoire de recherche :
acpi.dbg, si le fichier a été stocké
file.ptr avec un chemin d’accès au fichier de symboles réel, si un pointeur a été stocké
refs.ptr, qui contient une liste de tous les emplacements actuels pour acpi.dbg avec cet horodatage et la taille d’image actuellement ajoutée au magasin de symboles
L’affichage de la liste de répertoires de \\mybuilds\symsrv\acpi.dbg\37cdb03962040 donne les éléments suivants :
10/04/1999 01:54p 52 file.ptr
10/04/1999 01:54p 67 refs.ptr
Le fichier file.ptr contient la chaîne de texte « \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg ». Étant donné qu’il n’existe aucun fichier appelé acpi.dbg dans ce répertoire, le débogueur tente de trouver le fichier dans \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg.
Le contenu de refs.ptr est utilisé uniquement par SymStore, et non par le débogueur. Ce fichier contient un enregistrement de toutes les transactions qui ont eu lieu dans ce répertoire. Un exemple de ligne de refs.ptr peut être :
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg
Cela montre qu’un pointeur vers \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg a été ajouté avec la transaction « 0000000026 ».
Certains fichiers de symboles restent constants par le biais de différents produits ou builds ou d’un produit particulier. Voici un exemple de fichier msvcrt.pdb windows 2000. Une liste de répertoires de \\mybuilds\symsrv\msvcrt.pdb indique que seules deux versions de msvcrt.pdb ont été ajoutées au serveur de symboles :
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
Toutefois, une liste de répertoires de \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 montre que refs.ptr a plusieurs pointeurs.
Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999 02:50p 54 file.ptr
10/05/1999 02:50p 2,039 refs.ptr
Le contenu de \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr est le suivant :
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
Cela montre que le même msvcrt.pdb a été utilisé pour plusieurs builds de symboles pour Windows 2000 stockés sur \\mybuilds\symsrv.
Voici un exemple de répertoire qui contient un mélange d’ajouts de fichiers et de pointeurs :
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
Dans ce cas, refs.ptr a le contenu suivant :
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
Ainsi, les transactions 43, 44 et 45 ont ajouté le même fichier au serveur, et les transactions 46 et 47 ont ajouté des pointeurs. Si les transactions 43, 44 et 45 sont supprimées, le fichier dbghelp.dbg est supprimé du répertoire. Le répertoire aura ensuite le contenu suivant :
Directory of e:\symsrv\dbghelp.dbg\38039ff439000
10/13/1999 05:01p 49 file.ptr
10/13/1999 05:01p 130 refs.ptr
À présent, file.ptr contient « \\foo2\bin\symbols\retail\dll\dbghelp.dbg » et refs.ptr contient
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg
Chaque fois que l’entrée finale dans refs.ptr est un pointeur, le fichier file.ptr existe et contient le chemin d’accès au fichier associé. Chaque fois que l’entrée finale dans refs.ptr est un fichier, aucun fichier.ptr n’existe dans ce répertoire. Par conséquent, toute opération de suppression qui supprime l’entrée finale dans refs.ptr peut entraîner la création, la suppression ou la modification de file.ptr.