我已经阅读了很多类似的问题,但我似乎找不到确切问题的答案。
我从一个运行在64位Windows 2008上的32位应用程序中获得了一组minidump。我的32位Vista Business上的32位Visual Studio根本不会触及它们,所以我一直试图在WinDbg中打开它们。
我没有EXACT对应的.pdb文件(我们只在这个特定版本之后才开始保存它们),但是我的.pdbs是由同一台机器用相同的代码构建的.pdbs。我也可以访问创建minidump的确切可执行文件。
我发现了一个名为ChkMatch的漂亮小应用程序,它可以使.pdbs与可执行文件匹配...唯一的区别(根据ChkMatch)是age,所以我将我的新.pdbs与原始可执行文件匹配。
然而,当我在WinDbg中加载它时,它仍然说它是一个“不匹配的pdb”然后,因为我设置了.symopts+0x40
它无论如何都试图加载它们。然后我收到警告:
*** WARNING: Unable to verify checksum for myexe.exe
我跑了!lmi myexe
并且确实看到了可执行文件的校验和实际上是零。从稍微探讨一下,我发现可执行文件应该使用/release
标志构建,以便具有校验和。这一切都很好,但我不能完全回到过去并重建(如果我这样做,我肯定会保存原来的.pdbs :-P)。
我能在这做什么吗?看起来有点荒谬我不能在这里匹配至少足以得到一个调用堆栈。
答案 0 :(得分:1)
您不需要校验和来获取调用堆栈 - 可以安全地忽略此警告。
获取发出堆栈命令所需的堆栈(k的任何变体)。
如果minidumps有任何好处(即描述实际的错误),你应该首先尝试自动分析!analyze -v
,这将使你开始。
当你耗尽了你的专业知识时回来:o)
答案 1 :(得分:0)
如果您正在使用minidumps,则必须将图像路径(Ctrl + I)设置为指向转储中包含图像的位置。 minidumps的问题在于它们不包含目标上可执行文件的任何代码或数据,因此您必须自己提供它们。
-Scott