是否可以在Visual Studio中加载不匹配的符号?

Mor*_*nar 15 c debugging minidump visual-studio

我有一个Windows minidump(C代码)和一个相应的exe文件.不幸的是,我没有完全匹配的.pdb文件,但我确实有.pdbs包含完全相同的代码,只是在不同的时间构建.在Windbg中,我可以使用:

.symopt+0x40
Run Code Online (Sandbox Code Playgroud)

告诉它加载任何东西,甚至是不匹配的符号文件.这在这个特定的实例中效果很好,我能够得到一个正确的调用堆栈.我只是好奇Visual Studio是否有这样的功能.我们在这里使用了几乎所有不同版本的VS,因此它可能属于哪个版本并不重要.谢谢.

小智 20

试试这个工具:

ChkMatch实用程序可用于检查可执行文件和调试信息文件是否匹配.它还可用于强制执行可执行文件和调试信息文件之间的匹配(如果它们是兼容的).

有关调试信息匹配和相关问题的详细信息,请参阅此文章.

支持的调试信息格式:DBG,PDB 2.0,PDB 7.0 ......


Ste*_*end 5

没有覆盖,但是此问题的发布者找到了一种修改PDB文件以使其与EXE匹配的方法。

感谢对第一个答案的评论之一,我签出了指向“未公开的Windows 2000秘密:程序员食谱”一书的pdf的链接。作者还详细介绍了pdb文件格式。如前所述,我已经将pdb加载到了十六进制编辑器中,并在出现年龄/签名匹配的情况下进行了一些翻转,但这没有用。好了,在使用W2k Secrets书中的实用程序将pdb“分解”到包含的流中之后,我发现它们在流3中隐藏了另一个关于年龄的引用!一旦我也翻转了那个,它在windbg中就匹配了。

不确定是否要麻烦很多,但是看起来可以解决。如果这是生产支持,那么值得您花时间。