1

我已经阅读了很多类似的问题,但我似乎无法找到我的问题到底是什么的答案。

我有一组运行在 64 位 Windows 2008 上的 32 位应用程序的 minidump。我的 32 位 Vista Business 上的 32 位 Visual Studio 根本不会触及它们,所以我一直试图在 WinDbg 中打开它们。

我没有完全对应的 .pdb 文件(我们只是在此特定版本之后才开始保存它们),但我有 .pdbs 由同一台机器使用相同的代码构建。我还可以访问创建小型转储的确切可执行文件。

我发现了一个名为 ChkMatch 的漂亮小应用程序,它可以使 .pdbs 与可执行文件匹配……唯一的区别(根据 ChkMatch)是年龄,所以我将较新的 .pdbs 与原始可执行文件匹配。

但是,当我在 WinDbg 中加载它时,它仍然说它是一个“不匹配的 pdb”,因为我已经设置.symopts+0x40它尝试加载它们。然后我收到警告:

*** WARNING: Unable to verify checksum for myexe.exe

我跑过去!lmi myexe看到,确实,可执行文件的校验和实际上为零。经过一番摸索,我发现可执行文件应该使用/release标志构建以具有校验和。这一切都很好,但我不能完全回到过去并重建(如果我这样做了,我肯定会保存原始的 .pdbs :-P )。

有什么我可以在这里做的吗?似乎有点荒谬我不能在这里匹配至少足以获得调用堆栈。

4

2 回答 2

1

you don't need the checksum to get a call stack - this warning can be safely ignored.

to get the stack you need to issue the stack command (any variant of k).

if the minidumps are any good (i.e. describe an actual fault), you should first try the auto analysis !analyze -v which will get you started.

come back when you have exhausted your expertise :o)

于 2010-07-15T21:54:12.160 回答
0

如果您正在使用小型转储,那么您必须将图像路径 (Ctrl+I) 设置为指向转储中包含图像的位置。minidump 的问题在于它们不包含来自目标上的可执行文件的任何代码或数据,因此您必须自己提供它们。

-斯科特

于 2010-07-16T14:45:36.540 回答