Overview
DIA是microsoft提供的一个有用的库,专门用来解析microsoft的C++编译器所生成的pdb文件。通过此能力就可以在有pdb的情况下编写一些有用的工具。
Started
在安装VS的时候就已经安装了DIA SDK. 路径在$(VsInstallDir)DIA SDK下。
因为该SDK依赖于msdia.dll 这个com组件,因此需要在使用之前注册该组件,即能够在管理员权限之下调用regsvr32 msdia.dll。这里要注意版本区别。
能够需要到的几个文件分别为
Header: include\dia2.h
Library: lib\diaguids.lib
DLL: bin\msdia80.dll
IDL: idl\dia2.idl
程序开头主要是需要包含头文件dia2.h以及链接diaguids.lib。
Main Interfaces
IDiaDataSource
DataSource代表了DIA SDK所能访问Symbol基本能力的接口,有了能力就能在存在的Symbol 文件上创建session.
IDiaSession
需要访问指定的PDB就需要创建session。代表了对一个symbol文件的一次访问行为。
IDiaSymbol
这是最重要的一个接口,其中的接口方法也最多,里面几乎有包含的所有能对symbol文件进行的操作接口或者所创建其他一些子对象。
IDiaEnumSymbols
算是一个辅助的接口,方便迭代symbol的集合
Sequence
这里给出一个code片段,说明Symbol接口如何得到
// need to initialize C