Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
SymStore verwendet das Dateisystem selbst als Datenbank. Es erstellt eine große Verzeichnisstruktur mit Namen, die auf Faktoren wie den Zeitstempeln der Symboldateien, deren Signaturen, dem Alter der Daten und anderen Informationen basieren.
Nachdem dem Server beispielsweise mehrere verschiedene acpi.dbgs hinzugefügt wurden, könnten die Verzeichnisse wie folgt aussehen:
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 diesem Beispiel könnte der Nachschlagepfad für die Symboldatei acpi.dbg wie folgt aussehen: \\mybuilds\symsrv\acpi.dbg\37cdb03962040.
Im Nachschlageverzeichnis sind möglicherweise drei Dateien vorhanden:
acpi.dbg, wenn die Datei gespeichert wurde
file.ptr mit einem Pfad zur eigentlichen Symboldatei, wenn ein Zeiger gespeichert wurde
refs.ptr, das eine Liste aller aktuellen Speicherorte für acpi.dbg mit diesem Zeitstempel und dieser Bildgröße enthält, die derzeit dem Symbolspeicher hinzugefügt werden
Das Anzeigen der Verzeichnisauflistung von \\mybuilds\symsrv\acpi.dbg\37cdb03962040 gibt Folgendes:
10/04/1999 01:54p 52 file.ptr
10/04/1999 01:54p 67 refs.ptr
Die Datei file.ptr enthält die Textzeichenfolge "\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg". Da in diesem Verzeichnis keine Datei namens acpi.dbg vorhanden ist, versucht der Debugger, die Datei unter \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg zu finden.
Der Inhalt von refs.ptr wird nur von SymStore und nicht vom Debugger verwendet. Diese Datei enthält einen Datensatz aller Transaktionen, die in diesem Verzeichnis stattgefunden haben. Eine Beispielzeile von refs.ptr kann folgendes sein:
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg
Dies zeigt, dass ein Zeiger auf \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg mit transaktion "0000000026" hinzugefügt wurde.
Einige Symboldateien bleiben bei verschiedenen Produkten, Builds oder einem bestimmten Produkt konstant. Ein Beispiel hierfür ist die Windows 2000-Datei "msvcrt.pdb". Eine Verzeichnisauflistung von \\mybuilds\symsrv\msvcrt.pdb zeigt, dass dem Symbolserver nur zwei Versionen von msvcrt.pdb hinzugefügt wurden:
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
Eine Verzeichnisauflistung von \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 zeigt jedoch, dass refs.ptr mehrere Zeiger enthält.
Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999 02:50p 54 file.ptr
10/05/1999 02:50p 2,039 refs.ptr
Die Inhalte von \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr sind wie folgt:
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
Dies zeigt, dass dieselbe msvcrt.pdb für mehrere Builds von Symbolen für Windows 2000 verwendet wurde, die unter \\mybuilds\symsrv gespeichert sind.
Hier ist ein Beispiel für ein Verzeichnis, das eine Mischung aus Datei- und Zeigerzufügungen enthält:
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 diesem Fall weist refs.ptr den folgenden Inhalt auf:
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
So haben Transaktionen 43, 44 und 45 die gleiche Datei zum Server hinzugefügt, und Transaktionen 46 und 47 Zeiger hinzugefügt. Wenn Transaktionen 43, 44 und 45 gelöscht werden, wird die Datei dbghelp.dbg aus dem Verzeichnis gelöscht. Das Verzeichnis hat dann den folgenden Inhalt:
Directory of e:\symsrv\dbghelp.dbg\38039ff439000
10/13/1999 05:01p 49 file.ptr
10/13/1999 05:01p 130 refs.ptr
Datei.ptr enthält jetzt "\\foo2\bin\symbols\retail\dll\dbghelp.dbg" und refs.ptr enthält
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg
Wenn der letzte Eintrag in refs.ptr ein Zeiger ist, ist die Datei "file.ptr" vorhanden und enthält den Pfad zur zugeordneten Datei. Wenn der endgültige Eintrag in refs.ptr eine Datei ist, ist in diesem Verzeichnis kein File.ptr vorhanden. Daher kann jeder Löschvorgang, der den endgültigen Eintrag in refs.ptr entfernt, dazu führen, dass file.ptr erstellt, gelöscht oder geändert wird.