原文地址:http://blog.vckbase.com/zyq654321/archive/2008/05/27/1289.html
Program Database 是目前最新的 Debug 信息格式。目前为此已经出现了两个版本,一个是用于 Visual studio6.0 的 PDB20 ,另一个是用于 Visual studio.Net(2002 or 2003) 的 PDB70 。然后后者并不会兼容前者,所以 visual studio6.0 将不能使用最新的 PDB70 。
下面指出 PDB 中通常会保存一些什么类型的信息:全局函数和变量;成员函数、成员变量及局部变量;符号对应的源文件中的行号;变量类型信息; FPO 信息;编辑后继续运行信息。一般来说对于每一种符号都会有相应的保存属性,符号类型、地址、大小和符号名。
Program Database 信息是与文件执行体分离的,通常它会保存在 .pdb 后缀的文件中。 PDB 文件的建立是与编译器和链接器紧密相连的。通过设定编译器选项( /ZI, /Z7, /Zi, /Zd ) , 编译器可以在编译源文件时对应每一个源文件产生一个相应的调试符号文件;然后设定相应的链接器选项( /DEBUGTYPE , /DEBUG , /PDB 等)可以将单个的调试符号文件合并成 PDB 文件。
如果你要利用 PDB 为你的工作服务,你可以使用最新的 Debugging Tools for Window 来对 PDB 文件(当然也可以是 EXE 和 DLL 文件)进行对符号信息的操作。
下载地址:Debugging Tools for Windows
如果你要使用它的 SDK ,就应该确保在安装时使用的是 Custom 安装。这样在你安装后的你会得到最新的 dbghelp.h 和 dbghelp.lib 等文件。我已经用这些函数写一些例子,有时间的话整理出来供大家参考。^_^
Enjoy!