SymStore 事务

每次调用 SymStore 都会记录为事务。 有两种类型的事务:添加和删除。

创建符号存储后,将在服务器的根目录下创建一个名为“000admin”的目录。 000admin 目录包含每个事务的一个文件,以及日志文件 server.txt 和 history.txt。 server.txt 文件包含当前在服务器上的所有事务的列表。 history.txt 文件包含所有事务的按时间顺序排列的历史记录。

每次 SymStore 存储或删除符号文件时,都会创建新的事务编号。 然后,将在 000admin 中创建一个文件名为此事务号的文件。 此文件包含在此事务期间添加到符号存储的所有文件或指针的列表。 如果删除事务,SymStore 将读取其事务文件,以确定应删除的文件和指针。

添加del 选项指定是执行添加或删除事务。 在添加操作中使用 /p 选项表示将添加指针;省略 /p 选项则表示将添加实际的符号文件。

还可以在两个单独的阶段创建符号存储。 在第一个阶段中,将 SymStore 与 /x 选项一起使用来创建索引文件。 在第二个阶段,您使用 SymStore 并带有 /y 选项,从索引文件中的信息创建文件或指针的实际存储库。

出于各种原因,这可以是一种有用的技术。 例如,如果存储以某种方式丢失,则允许轻松重新创建符号存储,前提是索引文件仍然存在。 或者,包含符号文件的计算机与用于创建符号存储的计算机的网络连接较慢。 在这种情况下,可以在符号文件所在的同一台计算机上创建索引文件,将索引文件传输到第二台计算机,然后在第二台计算机上创建存储。

有关所有 SymStore 参数的完整列表,请参阅 SymStore Command-Line 选项

注意 SymStore 不支持多个用户同时进行事务。 建议将一个用户指定为符号存储的“管理员”,并负责所有 添加del 事务。

事务示例

下面是 SymStore 向 \\MyDir\symsrv 添加 Windows 2000 内部版本 2195 的符号指针的两个示例:

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 示例。 请参阅下面的“server.txt 和 history.txt 文件”部分,了解如何确定事务 ID(在本例中为0000000096)。

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,

这是逗号分隔的行。 字段解释如下:

领域 DESCRIPTION

0000000096

由 SymStore 创建的事务 ID 号。

添加

事务的类型。 此字段可以是 adddel

ptr

是否已添加文件或指针。 此字段可以是 文件ptr

10/09/99

事务发生时的日期。

00:08:32

事务启动的时间。

Windows Vista SP 1

产品。

x86 fre

版本(可选)。

添加自

注释 (可选)

Unused

(保留供以后使用。

下面是事务文件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

删除交易的字段如下所示。

领域 DESCRIPTION

0000000105

由 SymStore 创建的事务 ID 号。

del

事务的类型。 此字段可以是 adddel

0000000096

已删除的事务。