Поделиться через


Транзакции SymStore

Каждый вызов SymStore записывается как транзакция. Существует два типа транзакций: добавление и удаление.

При создании хранилища символов в корневом каталоге сервера создается каталог с именем "000admin". Каталог 000admin содержит по одному файлу для каждой транзакции, а также файлы журналов server.txt и history.txt. Файл server.txt содержит список всех транзакций, которые в настоящее время находятся на сервере. Файл history.txt содержит хронологический журнал всех транзакций.

Каждый раз, когда SymStore сохраняет или удаляет файлы символов, создается новый номер транзакции. Затем в 000admin создается файл с именем этого номера транзакции. Этот файл содержит список всех файлов или указателей, добавленных в хранилище символов во время этой транзакции. Если транзакция удалена, SymStore считывает файл транзакции, чтобы определить, какие файлы и указатели ей следует удалить.

Параметры add и del указывают, следует ли выполнять транзакцию добавления или удаления. Включение параметра /p с операцией добавления указывает, что нужно добавить указатель; Пропуск параметра /p указывает, что фактический файл символов должен быть добавлен.

Хранилище символов также можно создать в два отдельных этапа. На первом этапе для создания файла индекса используется SymStore с параметром /x . На втором этапе вы используете SymStore с параметром /y , чтобы создать фактическое хранилище файлов или указателей на основе сведений в файле индекса.

Это может быть полезным методом по различным причинам. Например, это позволяет легко воссоздать хранилище символов, если оно каким-то образом потеряно, если файл индекса все еще существует. Или, возможно, компьютер, содержащий файлы символов, имеет медленное сетевое подключение к компьютеру, на котором будет создано хранилище символов. В этом случае можно создать файл индекса на том же компьютере, что и файлы символов, перенести файл индекса на второй компьютер, а затем создать хранилище на втором компьютере.

Полный список всех параметров SymStore см. в разделе Параметры Command-Line SymStore.

Примечание SymStore не поддерживает одновременные транзакции от нескольких пользователей. Рекомендуется назначить одного пользователя администратором хранилища символов и нести ответственность за все транзакции add и del .

Примеры транзакций

Ниже приведены два примера добавления указателей символов SymStore для сборки 2195 Windows 2000 в \\MyDir\symsrv:

symstore add /r /p /f \\BuildServer\BuildShare\2195free\symbols\*.* /s \\MyDir\symsrv /t "Windows 2000" /v "Build 2195 x86 free" /c "Sample add"
symstore add /r /p /f \\BuildServer\BuildShare\2195free\symbols\*.* /s \\MyDir\symsrv /t "Windows 2000" /v "Build 2195 x86 checked" /c "Sample add"

В следующем примере SymStore добавляет фактические файлы символов для проекта приложения в \\largeapp\appserver\bins в \\MyDir\symsrv:

symstore add /r /f \\largeapp\appserver\bins\*.* /s \\MyDir\symsrv /t "Large Application" /v "Build 432" /c "Sample add"

Ниже приведен пример использования файла индекса. Сначала SymStore создает файл индекса на основе коллекции файлов символов в папке \\largeapp\appserver\bins\. В этом случае файл индекса помещается на третий компьютер, \\hubserver\hubshare. Используйте параметр /g , чтобы указать, что префикс файла "\\largeapp\appserver" может измениться в будущем:

symstore add /r /p /g \\largeapp\appserver /f \\largeapp\appserver\bins\*.* /x \\hubserver\hubshare\myindex.txt

Теперь предположим, что вы переместили все файлы символов с компьютера \\largeapp\appserver и поместили их в \\myarchive\appserver. Затем можно создать само хранилище символов из файла индекса \\hubserver\hubshare\myindex.txt следующим образом:

symstore add /y \\hubserver\hubshare\myindex.txt /g \\myarchive\appserver /s \\MyDir\symsrv /p /t "Large Application" /v "Build 432" /c "Sample Add from Index"

Наконец, ниже приведен пример удаления SymStore файла, добавленного предыдущей транзакцией. Сведения об определении идентификатора транзакции (в данном случае 0000000096) см. в разделе "Файлы server.txt и history.txt".

symstore del /i 0000000096 /s \\MyDir\symsrv

Файлы server.txt и history.txt

При добавлении транзакции несколько элементов информации добавляются в server.txt и history.txt для возможности поиска в будущем. Ниже приведен пример строки в server.txt и history.txt для транзакции добавления:

0000000096,add,ptr,10/09/99,00:08:32,Windows Vista SP 1,x86 fre 1.156c-RTM-2,Added from \\mybuilds\symbols,

Это строка, разделенная запятыми. Поля описываются следующим образом:

Поле Описание

0000000096

Номер идентификатора транзакции, созданный SymStore.

add

Тип транзакции. Это поле может быть либо add , либо del.

ptr

Были ли добавлены файлы или указатели. Это поле может быть как file , так и ptr.

10/09/99

Дата, когда произошла транзакция.

00:08:32

Время начала транзакции.

Windows Vista с пакетом обновления 1 (SP1)

Продукт.

x86 fre

Версия (необязательно).

Добавлено из

Комментарий (необязательно)

Не используется

(Зарезервировано для последующего использования.)

Ниже приведены примеры строк из файла транзакций 0000000096. В каждой строке записывается каталог и расположение файла или указателя, добавленного в каталог.

canon800.dbg\35d9fd51b000,\\mybuilds\symbols\sp4\dll\canon800.dbg
canonlbp.dbg\35d9fd521c000,\\mybuilds\symbols\sp4\dll\canonlbp.dbg
certadm.dbg\352bf2f48000,\\mybuilds\symbols\sp4\dll\certadm.dbg
certcli.dbg\352bf2f1b000,\\mybuilds\symbols\sp4\dll\certcli.dbg
certcrpt.dbg\352bf04911000,\\mybuilds\symbols\sp4\dll\certcrpt.dbg
certenc.dbg\352bf2f7f000,\\mybuilds\symbols\sp4\dll\certenc.dbg

Если вы используете транзакцию del для отмены исходных транзакций добавления , эти строки будут удалены из server.txt, а следующая строка будет добавлена в history.txt:

0000000105,del,0000000096

Поля для транзакции удаления описаны следующим образом.

Поле Описание

0000000105

Номер идентификатора транзакции, созданный SymStore.

del

Тип транзакции. Это поле может быть либо add , либо del.

0000000096

Удаленная транзакция.