我有一个客户应用程序的崩溃转储,用我在WinDbg中分析过的我们的一个非常旧版本的dll(发布版本,没有原始符号)构建。崩溃转储 - WinDbg - 强制PDB文件匹配不起作用?
为了获得更多信息,我使用相同的编译器版本重新构建了释放模式下的dll,并使用相同的编译器版本,并且我相信与最初构建dll时的设置相同。我将符号文件添加到我的符号路径中,但是WinDbg扩展!itoldyouso告诉我转储中的模块与PDB文件不匹配。启用SYMOPT_LOAD_ANYTHING也没有帮助。
!itoldyouso告诉我他们不匹配,因为模块没有pdb sig(值为0),而与我创建的重新创建的符号文件(使用有效的pdb sig)不匹配。我如何让他们匹配?
是的,它加载了foo的符号,但是在详细输出中我也看到了不匹配的报告:“DBGENG:foo.dll有不匹配的符号 - 类型”.hh dbgerr003“详细信息“ – JosephA
当然,它们会被报告为不匹配,因为它们不是在构建DLL时构建的。但只要你使用相同的编译器和设置(你提到的)并且源代码根本没有改变,那么这些符号就可以工作。 –
我想我是在假设下工作,除非我有一场比赛,我根本无法相信调用堆栈,虽然也许正如你所说他们永远不会匹配,但也许尽管我仍然可以有一个大多数有效的调用堆栈。 – JosephA