78.windbg-symstore 创建符号存储

windows调试工具集提供了symstore工具,这个工具可以扫描文件夹,收集所有可执行模块及其相应的符号,然后将它们组织成一种特殊的结构,运行在调试器中的符号客户端可以识别到这种结构,这些符号文件是根据它们的名字以及在字符串RSDS后面的GUID来组织的,二进制文件则是根据它们的名字以及编译时间戳来建立索引

由于存在两种类型的符号,因此这个工具可以生成两个符号库,公有和私有:


SymStore 事务支持下面这些语法形式。第一个参数必须是adddel。 其他参数的顺序不重要。

symstore add [/r] [/p [/l] [-:MSG Message] [-:REL] [-:NOREFS]] /f File /s Store /t Product [/v Version] [/o] [/c Comment] [/d LogFile] [/compress]

symstore add [/r] [/p [/l] [-:REL] [-:NOREFS]] /g Share /f File /x IndexFile [/a] [/o] [/d LogFile

symstore add /y IndexFile /g Share /s Store [/p [-:MSG Message] [-:REL] [-:NOREFS]] /t Product [/v Version] [/o] [/c Comment] [/d LogFile] [/compress]

symstore query [/r] /File /s Store [/o] [/d LogFile]

symstore del /i ID /s Store [/o] [/d LogFile

symstore /? 

参数

/f File 指定要添加的文件或目录的网络路径。

 /g Share 指定符号文件本来存储的服务器和共享。当使用/f时,Share 应该和File 指示符的开头相同。使用/y 时,Share 应该是原始符号文件的位置(不是索引文件)。这使得之后将符号文件移动到不同的服务器和共享时可以改变文件路径的一部分。

 /s Store 指定符号存储的根目录。

 /m Prefix 使得SymStore在存储文件或升级指针时使用以Prefix开始的路径来使用符号。该选项不能和/x一起使用。 /h { PUB | PRI } 使得SymStore在存储或升级符号时使用共有符号(如果指定了PUB),或私有符号(如果指定了PRI)。该选项对二进制文件没有影响。 

/i ID 指定事务ID字符串。

 /p 使得SymStore存储文件的指针,而不是文件本身。 /l 允许File 指定的文件在本地目录中而不是网络路径。(该选项仅在同时使用/f/p时使用。) 

-:MSG Message 将指定的Message 添加到每个文件。(仅在使用/p时可以使用。) 

-:REL 允许文件指针中的路径是相对路径。该选项隐含/l选项。(仅在使用/p时可以使用。) 

-:NOREFS 省略被存储的文件和指针的引用指针文件的创建。如果被修改的存储是使用该选项创建的,那么这个选项仅在符号存储最初被创建时有效。 

/r 使得SymStore递归的添加文件或目录。 

/t Product 指定产品名字。 

/v Version 指定产品的版本。 

/c Comment 为事务指定一个注释。 

/d LogFile 指定一个用于命令输出的日志文件。如果没有指定它,则事务信息和其他输出被发送给stdout/o 使得SymStore显示详细输出。

 /x IndexFile 使得SymStore不存储实际的符号文件。作为替代,SymStore记录IndexFile 中的信息,使得SymStore可以在之后再访问符号文件。 

/a 让SymStore将新的索引信息添加到一个已存在的索引文件中。(该选项只和/x 一起使用。) 

/y IndexFile 让SymStore从使用/x 创建的文件中读取数据。 

/yi IndexFile 将事务ID和注释添加到由/x选项创建的索引文件末尾。 

/z { PUB | PRI } 使得SymStore仅索引指定类型的符号。指定PUB时,仅有不包含任何源码信息的符号会被索引。如果指定PRI,仅有包含完整的源码信息的符号会被索引。SymStore总是为二进制符号创建索引。 

/compress 使得SymStore为每个拷贝到符号存储中的文件创建一个压缩后的版本而不是使用未压缩的文件。该选项仅在存储文件而不是指针时使用,所以不能和/p选项一起使用。 

/? 显示SymStore 命令的帮助文本。

D:\hgyTools\动态调试\x86>symstore.exe add /f E:\SourceCode\DM\DM\vs2010\bin\Debug /s e:\symstore.pri /t DM /r /z pri
Finding ID...  0000000001

SYMSTORE: Number of files stored = 11
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 541

D:\hgyTools\动态调试\x86>symstore.exe add /f E:\SourceCode\DM\DM\vs2010\bin\Debug /s e:\symstore.pub /t DM /r /z pub
Finding ID...  0000000001

SYMSTORE: Number of files stored = 7
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 545

再加一个到e:\symstore.pri目录

D:\hgyTools\动态调试\x86>symstore.exe add /f E:\SourceCode\DM\Me-DM\vs2010\bin\Debug /s e:\symstore.pri /t DM /r /z pri
Finding ID...  0000000003

SYMSTORE: Number of files stored = 15
SYMSTORE: Number of errors = 0
SYMSTORE: Number of files ignored = 616

生成的符号库格式如下: dmdemo.pdb有两份了

D:\hgyTools\动态调试\x86>tree e:\symstore.pri /F /A
卷 工程代码 的文件夹 PATH 列表
卷序列号为 0000007D 4294:7998
E:\SYMSTORE.PRI
|   pingme.txt
|
+---000Admin
|       0000000001
|       0000000002
|       0000000003
|       history.txt
|       lastid.txt
|       server.txt
|
+---DMDemo.exe
|   +---5A818FF49e000
|   |       DMDemo.exe
|   |       refs.ptr
|   |
|   \---5B13A35D9e000
|           DMDemo.exe
|           refs.ptr
|
+---DMDemo.pdb
|   +---9FFD35A2644C459FA563066D4C5E1187b
|   |       DMDemo.pdb
|   |       refs.ptr
|   |
|   \---B852CC05E4C748B3A92769289508925F2
|           DMDemo.pdb
|           refs.ptr






猜你喜欢

转载自blog.csdn.net/hgy413/article/details/80557445
78
今日推荐