2014年6月18日

Use Windbg to analyze .Net dump

第二次了,再不記下來我下回一定想跳樓......

首先要確認版本,打開 Report.wer 搜尋 mscorwks
LoadedModule[17]=C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
以這個例子來說就是 x86 的 v2.0.50727。
如果中間那個 Framework 的地方是寫 Framework64,那就是 x64 的。
Windbg 很奇妙的 64 bit 不能吃 32 bit,所以要搞清楚。

然後就打開 Windbg 吧,記得要開相對應的版本,
如果當初只有裝 x86 或是只有裝 x64 的 debug tool,
可以去 SDK folder 裡面找找看 (例如 C:\Program Files\Microsoft SDKs\Windows\v7.0\Redist\Debugging Tools for Windows )
再沒有就上網抓吧。

打開以後首先要設 symbol path。
自己 code 的放前面,再來系統的,download 的最後。
C:\_Code\Trend\TMSL\Build\1210_symbol;C:\Windows\Microsoft.NET\Framework64\v2.0.50727;srv*C:/SymbolCache*http://msdl.microsoft.com/download/symbols

然後 open crash dump,試試看 symbol 能不能解
.loadby sos mscorwks
看到這個就表示 ok
------------------------------------------------------------
sos.dll needs a full memory dump for complete functionality.
You can create one with .dump /ma <filename>
------------------------------------------------------------
阿如果看到這個就表示你開錯啦,windbg x64 吃到 32 bit dump 消化不良的
The call to LoadLibrary(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos) failed, Win32 error 0n193
    "%1 is not a valid Win32 application."
Please check your debugger configuration and/or network access.

最後都 OK 的話就放大絕吧~
!analyze -v


--
Reference

How to configure WinDbg to run other versions of the .NET
How to use Windbg to debug a dump of a 32bit .NET app running on a x64 machine
WinDbg / SOS Cheat Sheet
Intro to WinDBG for .NET Developers

沒有留言:

張貼留言