Loading... pdb 即 Program Data Base,程序基本数据,是 VS 编译器在编译链接过程中生成的文件。通俗来讲,就是 VS 生成的程序的符号文件,里面包含了程序的行号、变量名、函数名、FPO、源文件名等信息,可用于辅助调试。 一般认为只有 Debug 模式才会生成 pdb 文件,实则不然,Release 模式也可以生成,只不过 Release 模式下生成的程序一般经过优化,此时 pdb 和程序不一定能够对应起来,对调试分析的帮助没有 Debug 模式那么方便直接。 我们调试或静态分析程序时,如果没有 pdb 文件,就只能阅读汇编代码,或者依靠反汇编工具的能力来尽量反推得到伪C代码。如果有 pdb 文件,那么反汇编工具或调试器通过解析 pdb 文件,就能给出更详尽的信息。 多数情况下我们不需要直接去解析 pdb 文件,但也说不定,我接触过一个项目,就需要去解析 pdb 里面的 FPO(栈指针省略)数据,来协助分析取栈。微软提供了解析 pdb 文件的 SDK,如 [IDiaDataSource::loadDataFromPdb](https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2015/debugger/debug-interface-access/idiadatasource-loaddatafrompdb?view=vs-2015&redirectedfrom=MSDN)。如果本地安装了 VS,则 VS 也自带了一个 DIA2Dump 项目,项目实现了一些基础的 pdb 信息解析工作,也可以作为 DIA SDK 的学习项目。 ![Dia2Dump.png](http://47.117.131.13/usr/uploads/2021/07/1845948023.png) 最后修改:2021 年 07 月 12 日 11 : 33 PM © 允许规范转载