崩溃转储 - WinDbg - 强制PDB文件匹配不起作用?

时间:2014-02-19 16:23:40

标签: debugging windbg symbols crash-dumps

我有一个客户应用程序的崩溃转储,该应用程序是使用我在WinDbg中分析的dll(发布版本,没有原始符号)的旧版本构建的。

为了获得更多信息,我在发布模式下使用相同的编译器版本重建了带符号的dll,我相信与最初构建dll时相同的设置。我将符号文件添加到我的符号路径,但是WinDbg扩展名!itoldyouso告诉我转储中的模块与PDB文件不匹配。启用S​​YMOPT_LOAD_ANYTHING也无济于事。

!itoldyouso告诉我他们不匹配,因为模块没有pdb sig(值0),而不是我创建的重新创建的符号文件(使用有效的pdb sig)。我如何让它们匹配?

3 个答案:

答案 0 :(得分:12)

您是否尝试过.reload /i foo.dll

对于详细输出,请尝试:

!sym noisy;.reload /i foo.dll;x foo!*test*

答案 1 :(得分:7)

尝试使用chkmatch(http://debuginfo.com/tools/chkmatch.html) - 它能够覆盖pdb文件中的签名,因此exe和pdb将匹配。另外,前段时间我写了一篇关于“离线”检查pdb文件的帖子,也许你会发现有用的东西:http://lowleveldesign.wordpress.com/2011/12/09/pdb-file-out-of-debugger/

答案 2 :(得分:2)

很遗憾你没有匹配的DLL符号:(根据我的理解,现在任何尝试都无法为你提供完全匹配的PDB。

回收一些应该有用的旧线程:

Is it possible to (re)create a PDB file after a DLL is made

Tool to find if dll (or) exe and PDB file match

你最好的选择是

一个。将代码同步回DLL发布时

湾使用相同的工具集构建和创建PDB。

℃。使用.reload / i选项加载符号