一年前,我已經使用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