SymStore 事务

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

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

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

adddel 选项指定是执行添加或删除事务。 将 /p 选项与添加操作一起指定要添加指针;省略 /p 选项将指定要添加实际符号文件。

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

由于各种原因,这可以是一种有用的技术。 例如,只要索引文件仍然存在,这样就可以在存储以某种方式丢失时轻松重新创建符号存储。 或者,包含符号文件的计算机与要在其中创建符号存储的计算机的网络连接速度缓慢。 在这种情况下,可以在符号文件所在的计算机上创建索引文件,将索引文件传输到第二台计算机,然后在第二台计算机上创建存储。

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

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

事务示例

下面是 SymStore 将 Windows 2000 内部版本 2195 的符号指针添加到 \\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 删除由上一个事务添加的文件的示例。 请参阅下面的“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,

这是逗号分隔的行。 这些字段的说明如下:

字段 说明

0000000096

事务 ID 号,由 SymStore 创建。

添加

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

ptr

是否添加了文件或指针。 此字段可以是 fileptr

10/09/99

事务发生日期。

00:08:32

事务开始的时间。

Windows Vista SP 1

产品。

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

事务 ID 号,由 SymStore 创建。

del

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

0000000096

已删除的事务。