我正在研究混合模式應用程序(C++/CLI,C++,某些C#),並且在該字段崩潰時創建內存轉儲。我通常會從客戶處獲得這些垃圾,並試圖弄清楚出了什麼問題。使用SOS.dll進行事後.NET調試
問題是 - 如何處理託管代碼的驗屍調試?我通常使用WinDbg與SOS.dll,但它看起來像SOS不向後兼容!我最近運行Windows Update,現在我無法從客戶端加載任何小型轉儲程序。它抱怨錯誤的SOS版本。
如何獲得並加載以前的版本?我做錯了什麼?
我正在研究混合模式應用程序(C++/CLI,C++,某些C#),並且在該字段崩潰時創建內存轉儲。我通常會從客戶處獲得這些垃圾,並試圖弄清楚出了什麼問題。使用SOS.dll進行事後.NET調試
問題是 - 如何處理託管代碼的驗屍調試?我通常使用WinDbg與SOS.dll,但它看起來像SOS不向後兼容!我最近運行Windows Update,現在我無法從客戶端加載任何小型轉儲程序。它抱怨錯誤的SOS版本。
如何獲得並加載以前的版本?我做錯了什麼?
這可能是一個x86/64問題。你是如何加載sos的?
您可以通過使用試裝SOS:
.loadby sos mscorwks
或者,做不到這一點,嘗試顯式加載64位SOS:
.load c:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll
注意:這些例子有點奇怪。第一次嘗試從'mscorwks'的位置(即2.0運行時)加載'sos'。第二個例子試圖直接從4.0運行時加載'sos'。 –
我有同樣的問題。看看堆棧溢出問題WinDbg: Copy of SOS.dll x86 4.0.30319.237,它建議替代從服務器下載並引用正確版本的SOS。
sos.dll afaik沒有最近更新。您通常不得不擔心您的*客戶*進行配置更改。使用* exact *錯誤消息以及sos.dll文件中的版本和日期以及minidump中的mscorlib.dll更好地記錄您的問題。 –
你能列出你得到的錯誤嗎? –