如何理解visual studio的.pdb文件?

时间:2010-09-08 18:20:13

标签: visual-studio pdb-files disassembly

我用编辑打开它,完全凌乱。

BTW,在“反汇编”视图中,是否可以转储所有汇编代码?我试过但只能抓住一行线

4 个答案:

答案 0 :(得分:6)

我一直在跟踪你的问题。你应该在你的问题中提出上下文,我认为你正在尝试调试你没有源代码的DirectShow插件。某种相机小发明。

不,在文本编辑器中打开.pdb文件不会向您显示任何有用的内容。它是二进制数据。我知道你有一个相关的.pdb用于你正在使用的插件,你得到了具有命名功能的不错的堆栈跟踪。您可能从Microsoft Symbol服务器获得了.pdb。读取.pdb文件是调试器的工作。有几个API可供自己阅读,dbghelp API是核心API。

不会向您显示调试器中您尚未知道的任何内容。 .pdb文件只是一个函数数据库。你得到了剥离的,它永远不会显示你在调用堆栈窗口中看到的内容。

最终,这是一系列XY问题。你不断询问Y而没有透露真正的X问题是什么。你会得到无用的答案,比如这个答案,直到你告诉我们X.

答案 1 :(得分:4)

CodeProject: How to Inspect the Contents of a Program Database (PDB) File

请记住,这些文件是针对调试器而不是直接针对您的。至少我没有迫切希望能够在文本或十六进制编辑器中读取每种可能的文件格式。

答案 2 :(得分:2)

铭记@Hans Passant的评论 - 我认为这个问题应该得到答案,如果没有别的,那么为了那些通过搜索到达这里的人。

PDB检查的出厂工具是DBH。它与Windows的调试工具捆绑在一起。虽然不可否认是一个命令行工具(我个人来自GUI生成),它的功能非常丰富,你很难找到它在半行内无法做到的任何事情。

答案 3 :(得分:0)

听起来你想要的是dumpbin命令。请注意,这需要VC工具在您的PATH中;您可以使用开始菜单中的相应快捷方式或运行%VSxxCOMNTOOLS%\vsvars32.bat,其中xx是您正在使用的VC的实际版本的助记符:最简单的方法来确定要使用的确切环境变量可能会运行set并查看在您的环境中实际设置了具有此类名称的变量。例如,在安装了MSVC 2005 Express和MSVC 2008 Express的系统上,我得到了这个:

C:\code\xemacs-beta\nt>set | grep "VS.*COMNTOOLS"
VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\

因此,要创建一个新的shell窗口,并在路径中添加VC 9(2008)工具,我可以运行start "VC 9" "%VS90COMNTOOLS%\vsvars32.bat"。 ("VC 9"参数是新窗口的标题。)

无论如何,使用PATH中的VC工具,我们可以运行dumpbin /disasm ..\src\temacs.exe > temacs.disasm这样的命令(除了你可能不在xemacs树的nt子目录中,所以坚持你想要的任何路径)。这将使用可以找到符号名称的任何适当的PDB来反汇编给定的文件。

dumpbin MSDN entry中可以找到MS调用文档的内容(实际上,它比我记得的要好得多 - 或许我因为对/disasm标志如此缺乏信息而感到痛苦特别是),但不要低估dumpbin /?的用处 - 它可能不会提供尽可能多的信息,但至少你可以一次在屏幕上看到它。