2013-04-08 131 views
2

一年前,我已经使用WinDbg和DebugDiag在我们从Java内部使用的JNI本机DLL中查找内存泄漏。现在我正在寻找线程处理泄漏。 我创建使用Process Explorer的内存转储,并试图分析它在DebugDiag资料,但我得到的脚本错误: Memory dump analysis fails with script errorsWinDbg:尝试附加到进程时dbghelp.dll的版本不匹配

我也试过WinDbg的,但它不能连接到进程了。我总是得到错误信息“dbghelp.dll与调试器的版本不匹配”: WinDbg 6.12.0002.633 X86 fails with "Could not attach to process xxx 0x80004005" (“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)再次工作?

+0

这确实是奇怪的无效数据。你能否验证调试器进程已经加载了dbghelp.dll的副本(例如在进程管理器中),或者调试器文件夹中的dbghelp.dll确实是一个有效的PE文件(dumpbin或取决于救援)? – deemok 2013-04-09 17:28:10

+0

我检查了DLL。 WinDbg真正从调试工具路径加载DLL,如截图所示。仅依赖于无法找到ieshims.dll作为依赖项的报告。除此之外,它看起来像一个有效的DLL。我将Internet Explorer文件夹中的ieshims.dll复制到调试工具文件夹,但没有任何帮助。 – 2013-04-10 09:27:35

+0

只是一个疯狂的猜测 - 你是否尝试检查进程explorrer使用的dbghelp.dll的版本?是否有可能使用较新版本的dbghelp.dll来创建转储? – Jan 2014-08-01 19:54:34

回答

0

这是执行此检查dbgeng部分的伪代码:

var (
    g_ApiVersion = API_VERSION{1, 0, 12, 0} 
    g_DbghelpVersion API_VERSION 
    g_EngOptions = Options{...} 
) 

func ChkDbghlpVersion() uint32 { 
    g_DbghlpVersion = dbghelp.ImagehlpVersionEx(g_ApiVersion) 
    if g_DbghelpVersion.Revision < g_ApiVersion.Revision { 
     DebugOutput("dbghelp.dll has version mismatch with the debugger") 
     if !(g_EngOptions.SomeOpt & 1) { 
      return E_UNKNOWN 
     } 
    } 
    return S_OK 
} 

所以,你应该检查从调试文件夹的回报是什么dbghelp.dllImagehlpApiVersionEx(也可能什么dbgeng.dll在其g_ApiVersion)至找出调试器失败的原因。

可能的原因:

  • dbghelp.dll真的有一个备用构建信息。
  • dbgeng.dll损坏(?),且在其API版本块
+0

好的,我检查了dbghelp.dll以查找ChkDbghlpVersion的不同调用: 1. dbgeng.dll的版本似乎没问题:'g_ApiVersion:6.12.2.633,g_DbghlpVersion:6.12.2.633'。 2. Windows32目录中的dbghelp.dll版本提供了:'g_ApiVersion:6.1.7601.17514,g_DbghlpVersion:6.1.5.0'。 3.对于你的例子:'g_ApiVersion:1.0.12.0,g_DbghlpVersion:6.1.5.0' – 2013-04-25 18:31:51