2012-01-20 32 views
1

我有一個由Windows Mobile 6.5 ARMV4I上運行的C#.NET CF 3.5應用程序生成的驗屍後的kdmp,我想在WinDBG X86 6.12.0002.633中進行分析。從緊湊框架分析託管的調用堆棧

我能夠獲得非託管的調用堆棧,但這並不能告訴我更多的是我在.net應用程序中。

在大窗口中,我可以使用SOS來做!clrstack,但mscorwks.dll沒有被CF加載。

17:362:armce> !clrstack 
Failed to find runtime DLL (mscorwks.dll), 0x80004005 
Extension commands need mscorwks.dll in order to have something to do. 

我需要做些什麼來分析壓縮框架生成的轉儲文件?

感謝, PaulH

回答

0

檢查以確保以下幾點:

1 - 正確裝入SOS的框架

的正確版本爲2.0 - > C:\ WINDOWS \微軟.NET \框架\ V2.0.50727 \ sos.dll

4.0 - > C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ sos.dll

2 - 確保您使用了正在分析轉儲的進程加載的sos的正確版本。

對於使用.net 4.0的進程爲4.0框架加載sos.dll,同樣適用於其他框架。

因此,您收到的錯誤的可能原因是您沒有爲正在分析的進程加載正確的sos.dll。

通常我會在SOS.dll複製到調試目錄,並更名爲

SOS20.dll爲.NET 2.0版本和SOS40.dll用於.NET 4.0

然後加載DLL在調試器中使用

.load SOS20.dll當需要調試在.NET 2.0上運行的進程或加載其他版本(.load SOS40.dll)時。

+1

在哪裏可以獲得* compact *框架的SOS.dll? – ctacke