2011-08-31 57 views
4

我正在研究混合模式應用程序(C++/CLI,C++,某些C#),並且在該字段崩潰時創建內存轉儲。我通常會從客戶處獲得這些垃圾,並試圖弄清楚出了什麼問題。使用SOS.dll進行事後.NET調試

問題是 - 如何處理託管代碼的驗屍調試?我通常使用WinDbg與SOS.dll,但它看起來像SOS不向後兼容!我最近運行Windows Update,現在我無法從客戶端加載任何小型轉儲程序。它抱怨錯誤的SOS版本。

如何獲得並加載以前的版本?我做錯了什麼?

+0

sos.dll afaik沒有最近更新。您通常不得不擔心您的*客戶*進行配置更改。使用* exact *錯誤消息以及sos.dll文件中的版本和日期以及minidump中的mscorlib.dll更好地記錄您的問題。 –

+0

你能列出你得到的錯誤嗎? –

回答

1

這可能是一個x86/64問題。你是如何加載sos的?

您可以通過使用試裝SOS:

.loadby sos mscorwks 

或者,做不到這一點,嘗試顯式加載64位SOS:

.load c:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll 
+0

注意:這些例子有點奇怪。第一次嘗試從'mscorwks'的位置(即2.0運行時)加載'sos'。第二個例子試圖直接從4.0運行時加載'sos'。 –