我有一个来自目标应用程序崩溃的 mindmp 文件。我是否可以为某个版本的软件重建 dll/pdb 文件并正确地加载 windbg 符号?
我的问题是我们的 pdb 文件只保留用于主要版本(不幸的是)。这是一个每日构建,我可以自己重建,但我会被错误绊倒。
随着 !sym 嘈杂: “图像标题与内存图像标题不匹配。”
DBGENG: C:\...\XXX.dll image header does not match memory image header.
DBGENG: XXX.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
DBGHELP: C:\...\XXX.pdb - mismatched pdb
注意我已经用 dll 构建了 pdb,它们来自同一个 RELEASE 目录(我应该构建调试吗?)
这些是发布版本(因为发布版本安装在目标上并崩溃)我应该以某种方式使用调试构建 dll 来获取更多符号信息吗?
最佳答案
ChkMatch实用程序专为这种情况而设计。 只要您拥有原始 .EXE,就可以重新编译源代码(使用相同的编译器和编译器设置)并修补新的 .PDB 以匹配旧的 .EXE。
在此示例中,OriginalExecutable.exe 是不再具有 .PDB 文件的可执行文件,RebuiltPDB.pdb 是通过重建原始文件生成的可执行文件来源。
chkmatch -m OriginalExecutable.exe RebuiltPDB.pdb
现在,只要这两个文件有它们的原始名称,调试器就应该接受它们作为匹配对。
关于windows - WinDbg Dr. Watson minidump - 需要最初为安装版本构建的 pdb/dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/134866/