2

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

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

4

4 回答 4

6

我一直在关注你的问题。您应该在问题中提出上下文,我认为您正在尝试调试没有源代码的 DirectShow 插件。某种相机小玩意儿。

不,在文本编辑器中打开 .pdb 文件不会显示任何有用的信息。它是二进制数据。我知道您有一个与您正在使用的插件相关的 .pdb,您可以获得带有命名函数的不错的堆栈跟踪。您可能从 Microsoft 符号服务器获得了 .pdb。读取 .pdb 文件是调试器的工作。有几个 API 可以自己阅读,dbghelp API 是核心。

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

最终,这是一连串的 XY 问题。你一直在问 Y 却没有透露真正的 X 问题是什么。你只会得到无用的答案,比如这个,直到你告诉我们关于 X 的事情。

于 2010-09-08T21:51:22.333 回答
4

CodeProject:如何检查程序数据库 (PDB) 文件的内容

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

于 2010-09-08T18:26:18.183 回答
3

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

用于 PDB 检查的随附工具是DBH。它与 Windows 的调试工具捆绑在一起。虽然公认的命令行工具(我个人来自 GUI 一代),但它的功能非常丰富,你很难在半行中找到它无法完成的任何事情。

于 2014-10-27T14:59:17.027 回答
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\

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

无论如何,使用 PATH 中的 VC 工具,我们可以运行如下命令dumpbin /disasm ..\src\temacs.exe > temacs.disasm(除非您可能不在ntxemacs 树的子目录中,所以将您想要的任何路径放在那里)。这将使用它可以为符号名称找到的任何适当的 PDB 反汇编给定的文件。

可以在dumpbin MSDN 条目中找到 MS 所称的文档(实际上,它比我记忆中的要好得多——也许我因为对标志的信息太少而感到痛心/disasm),但不要低估的有用性dumpbin /?——它可能不会提供那么多信息,但至少您可以一次在屏幕上看到所有信息。

于 2010-11-27T19:36:17.583 回答