Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
SymStore использует файловую систему в качестве базы данных. Он создает большое дерево каталогов с именами каталогов на основе таких вещей, как метки времени файла символов, подписи, возраст и другие данные.
Например, после добавления на сервер нескольких различных acpi.dbgs каталоги могут выглядеть следующим образом:
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
В этом примере путь поиска для файла символов acpi.dbg может выглядеть следующим образом: \\mybuilds\symsrv\acpi.dbg\37cdb03962040.
Три файла могут существовать в каталоге поиска:
acpi.dbg, если файл был сохранен
file.ptr с путем к фактическому файлу символов, если указатель был сохранен
refs.ptr, содержащий список всех текущих расположений acpi.dbg с этим отметкой времени и размером файла изображения, которые в настоящее время добавлены в хранилище символов.
Отображение списка каталогов \\mybuilds\symsrv\acpi.dbg\37cdb03962040 дает следующее:
10/04/1999 01:54p 52 file.ptr
10/04/1999 01:54p 67 refs.ptr
Файл file.ptr содержит текстовую строку "\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg". Так как в этом каталоге нет файла acpi.dbg, отладчик попытается найти файл по адресу \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg.
Содержимое refs.ptr используется только SymStore, а не отладчиком. Этот файл содержит запись всех транзакций, выполненных в этом каталоге. Пример строки из refs.ptr может быть следующим:
0000000026,ptr,\\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg
В этом примере показано, что указатель на \\mybuilds\symbols\x86\2128.chk\symbols\sys\acpi.dbg добавлен с транзакцией "0000000026".
Некоторые файлы символов остаются постоянными через различные продукты или сборки или конкретный продукт. Одним из примеров этого является файл windows 2000 msvcrt.pdb. Список каталогов \\mybuilds\symsrv\msvcrt.pdb показывает, что на сервер символов добавлены только две версии 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
Однако список каталогов \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2 показывает, что refs.ptr имеет несколько указателей в нем.
Directory of \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2
10/05/1999 02:50p 54 file.ptr
10/05/1999 02:50p 2,039 refs.ptr
Содержимое \\mybuilds\symsrv\msvcrt.pdb\37a8f40e2\refs.ptr приведено ниже.
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
В этом примере показано, что один и тот же msvcrt.pdb использовался для нескольких сборок символов для Windows 2000, хранящихся в \\mybuilds\symsrv.
Ниже приведен пример каталога, содержащего смесь добавлений файлов и указателей:
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
В этом случае refs.ptr содержит следующее содержимое:
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
Таким образом, транзакции 43, 44 и 45 добавили тот же файл на сервер, а транзакции 46 и 47 добавили указатели. Если транзакции 43, 44 и 45 удаляются, файл dbghelp.dbg будет удален из каталога. Затем каталог будет содержать следующее содержимое:
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 содержит "\\foo2\bin\symbols\retail\dll\dbghelp.dbg", а refs.ptr содержит
0000000046,ptr,\\MyDir\bin\symbols\retail\dll\dbghelp.dbg
0000000047,ptr,\\foo2\bin\symbols\retail\dll\dbghelp.dbg
Когда последняя запись в refs.ptr является указателем, файл.ptr будет существовать и содержать путь к связанному файлу. Когда последняя запись в refs.ptr является файлом, файл.ptr не будет существовать в этом каталоге. Поэтому любая операция удаления, которая удаляет окончательную запись в refs.ptr, может привести к созданию, удалению или изменению file.ptr.