我已经阅读了很多类似的问题,但我似乎无法找到我的问题到底是什么的答案。
我有一组运行在 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 )。
有什么我可以在这里做的吗?似乎有点荒谬我不能在这里匹配至少足以获得调用堆栈。