一年前,我已经使用WinDbg和DebugDiag在我们从Java内部使用的JNI本机DLL中查找内存泄漏。现在我正在寻找线程处理泄漏。 我创建使用Process Explorer的内存转储,并试图分析它在DebugDiag资料,但我得到的脚本错误: WinDbg:尝试附加到进程时dbghelp.dll的版本不匹配
我也试过WinDbg的,但它不能连接到进程了。我总是得到错误信息“dbghelp.dll与调试器的版本不匹配”: (“Unbekannter Fehler”的意思是“未知错误”)
我卸载DebugDiag资料和Windows SDK,然后下载最新版本并安装了Windows SDK 8和DebugDiag 1.2(x86)。问题保持不变。即使在使用V7.1(最新的Windows 7 SDK)替换Windows SDK之后,也没有任何变化。
我正在使用Windows 7(32位)的机器。
我认为DebugDiag中的问题与WinDbg中的问题具有相同的原因。但我不明白的是什么意思版本不匹配(和谷歌搜索没有帮助):
- 的WinDbg:6.12.0002.633
- dbgeng:6.12.0002.633
- DBGHELP:6.12.0002.633
如何让WinDbg(并希望DebugDiag)再次工作?
这确实是奇怪的无效数据。你能否验证调试器进程已经加载了dbghelp.dll的副本(例如在进程管理器中),或者调试器文件夹中的dbghelp.dll确实是一个有效的PE文件(dumpbin或取决于救援)? – deemok 2013-04-09 17:28:10
我检查了DLL。 WinDbg真正从调试工具路径加载DLL,如截图所示。仅依赖于无法找到ieshims.dll作为依赖项的报告。除此之外,它看起来像一个有效的DLL。我将Internet Explorer文件夹中的ieshims.dll复制到调试工具文件夹,但没有任何帮助。 – 2013-04-10 09:27:35
只是一个疯狂的猜测 - 你是否尝试检查进程explorrer使用的dbghelp.dll的版本?是否有可能使用较新版本的dbghelp.dll来创建转储? – Jan 2014-08-01 19:54:34