Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa SymStore używa samego systemu plików jako bazy danych. Tworzy duże drzewo katalogów z nazwami katalogów na podstawie takich elementów, jak sygnatury czasowe pliku symboli, podpisy, wiek i inne dane.
Na przykład po dodaniu kilku różnych plików acpi.dbgs do serwera katalogi mogą wyglądać następująco:
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
W tym przykładzie ścieżka wyszukiwania dla pliku symboli acpi.dbg może wyglądać następująco: \\mybuilds\symsrv\acpi.dbg\37cdb03962040.
W katalogu wyszukiwania mogą istnieć trzy pliki.
acpi.dbg, jeśli plik został zapisany
file.ptr ze ścieżką do rzeczywistego pliku symboli, jeśli wskaźnik został zapisany
refs.ptr, który zawiera listę wszystkich bieżących lokalizacji dla pliku acpi.dbg z tym znacznikiem czasu i rozmiarem obrazu, które obecnie są dodawane do magazynu symboli
Wyświetlenie listy katalogów \\mybuilds\symsrv\acpi.dbg\37cdb03962040 daje następujące elementy:
10/04/1999 01:54p 52 file.ptr
10/04/1999 01:54p 67 refs.ptr
Plik file.ptr zawiera ciąg tekstowy "\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg". Ponieważ w tym katalogu nie ma pliku o nazwie acpi.dbg, debuger spróbuje znaleźć plik w folderze \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg.
Zawartość refs.ptr jest używana tylko przez SymStore, a nie przez debuger. Ten plik zawiera rekord wszystkich transakcji, które miały miejsce w tym katalogu. Przykładowa linia z pliku refs.ptr może być:
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg
To pokazuje, że wskaźnik do \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg został dodany z transakcją "0000000026".
Niektóre pliki symboli pozostają niezmienne w różnych produktach lub kompilacjach, lub w określonym produkcie. Przykładem jest plik systemu Windows 2000 msvcrt.pdb. Lista katalogów \\mybuilds\symsrv\msvcrt.pdb pokazuje, że do serwera symboli zostały dodane tylko dwie wersje pliku 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
Jednak lista katalogów \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 pokazuje, że element refs.ptr ma w nim kilka wskaźników.
Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999 02:50p 54 file.ptr
10/05/1999 02:50p 2,039 refs.ptr
Zawartość pliku \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr jest następująca:
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
Pokazuje to, że ten sam plik msvcrt.pdb był używany dla wielu kompilacji symboli systemu Windows 2000 przechowywanych w folderze \\mybuilds\symsrv.
Oto przykład katalogu zawierającego kombinację dodatków do pliku i wskaźnika:
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
W tym przypadku plik refs.ptr ma następującą zawartość:
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
W związku z tym transakcje 43, 44 i 45 dodały ten sam plik do serwera, a transakcje 46 i 47 dodały wskaźniki. Jeśli transakcje 43, 44 i 45 zostaną usunięte, plik dbghelp.dbg zostanie usunięty z katalogu. Następnie katalog będzie miał następującą zawartość:
Directory of e:\symsrv\dbghelp.dbg\38039ff439000
10/13/1999 05:01p 49 file.ptr
10/13/1999 05:01p 130 refs.ptr
Teraz plik.ptr zawiera "\\foo2\bin\symbols\retail\dll\dbghelp.dbg", a plik refs.ptr zawiera
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg
Za każdym razem, gdy ostatni wpis w pliku refs.ptr jest wskaźnikiem, plik file.ptr będzie istnieć i zawierać ścieżkę do skojarzonego pliku. Za każdym razem, gdy ostatni wpis w pliku refs.ptr jest plikiem, żaden plik.ptr nie istnieje w tym katalogu. W związku z tym każda operacja usuwania, która usuwa ostatni wpis w pliku refs.ptr, może spowodować utworzenie, usunięcie lub zmianę pliku.ptr.