当前位置:  开发笔记 > 开发工具 > 正文

WinDbg Dr. Watson minidump - 需要最初为安装版本构建的pdb/dll吗?

如何解决《WinDbgDr.Watsonminidump-需要最初为安装版本构建的pdb/dll吗?》经验,为你挑选了2个好方法。

我有一个来自目标应用程序崩溃的mindmp文件.我是否可以为某个版本的软件重建dll/pdb文件并正确加载windbg符号?

我的问题是我们的pdb文件仅保留用于主要版本(不幸的是).这是一个每日构建,我可以自己重建,但我会因错误而被绊倒.

使用!sym noisy on:"图像标题与内存图像标题不匹配."

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来获取更多符号信息吗?



1> 小智..:

该ChkMatch工具是专为这个确切的情况.只要你有原始的.EXE,就可以重新编译源代码(使用相同的编译器和编译器设置)并修补新的.PDB以匹配旧的.EXE.

在此示例中,OriginalExecutable.exe是不再具有.PDB文件的可执行文件,RebuiltPDB.pdb是通过重建原始源生成的文件.

chkmatch -m OriginalExecutable.exe RebuiltPDB.pdb

现在,只要这两个文件具有原始名称,调试器就应该接受它们作为匹配对.



2> Rob Walker..:

根据我的经验可能不是.

如果你有确切的构建目录并使用完全相同的编译器设置构建,那么这可能会起作用.您绝对无法从调试版本加载版本崩溃转储中的符号.

您需要打开'load anything'选项:.symopt + 0x40以使windbg忽略时间戳差异.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有