我读过很多类似的问题,但我似乎找不到确切的答案来回答我的问题是什么。
我从一个运行在64位Windows2008上的32位应用程序获得了一组小型转储。我的32位Vista业务上的32位Visual Studio根本不会碰它们,所以我一直试图在windbg中打开它们。
我没有完全对应的.pdb文件(我们只在这个特定的版本之后才开始保存它们),但是我有.pdb由同一台机器用相同的代码构建。我还可以访问创建小型转储的确切可执行文件。
我发现了一个漂亮的小应用程序,叫做chkmatch,它可以使.pdb与可执行文件匹配…唯一的区别(根据chkmatch)是年龄,所以我将更新的.pdb与原始可执行文件进行了匹配。
然而,当我把它加载到windbg中时,它仍然说它是一个“不匹配的pdb”,因为我已经设置了
.symopts+0x40
它试图加载它们。然后我得到警告:
*** WARNING: Unable to verify checksum for myexe.exe
我跑
!lmi myexe
并且发现,实际上,可执行文件的校验和为零。通过一点点的搜索,我发现可执行文件应该是用
/release
具有校验和的标志。这一切都很好,但我不能准确地回到时间和重建(如果我这样做,我肯定会保存原来的.pdbs:-p)。
我能在这里做些什么吗?似乎有点可笑,我不能让这里的东西匹配至少得到一个调用堆栈。