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

标签 windows debugging dll windbg dr.watson

我有一个来自目标应用程序崩溃的 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/

相关文章:

wpf - 如何实现一个多平台的多媒体应用?

c - Android NDK OpenSSL 交叉编译错误

计算自1970/1/1以来经过了多少时间(精确到毫秒)

c++ - 字符串反向功能不适用于奇数长度的字符串

c# - Visual Studio 2015远程调试器 'not implemented'

java - 如何在基于maven的项目中附加DLL文件

C++/CLI 包装器 LNK2028 和 LNK2019 错误

windows - 在Windows下编译.so

c++ - Visual Studio 2008 IDE - 静态链接 C Dll 库

python - 在 Python 中有条件地评估调试语句