2011-08-09 50 views
2

我們的C#應用​​程序在未處理的異常時調用MinidumpWriteDump。如何打開C#崩潰轉儲(Minidump)

我收到了一些來自用戶的崩潰轉儲,我似乎無法用SOS打開故障轉儲並查看導致崩潰的異常。

我們正在採取的轉儲類型是MiniDumpWithPrivateReadWriteMemory

我有我的_NT_SYMBOL_PATH配置爲使用MS公用符號服務器,和調試在WinDbg中此崩潰轉儲的時候,它會自動下載需要的DLL(因爲這轉儲被帶到一臺機器上使用不同版本的.NET 2 - 即與0.3053結束一個)

運行當線程我得到這個輸出:

無法要求ThreadStore

我已經瀏覽了所有可能的網站,這些網站解釋了處理不同版本的CLR的技術,而不是在轉儲機器中採用的技術,但都沒有爲我工作。

我能做些什麼來調試這些崩潰?

難道我們做錯了什麼(以一種錯誤的轉儲從.NET程序等)

編輯:

這裏的〜*結果:

0:000 >〜*。 0編號:1338.258掛起:0 TEB:7ffdf000解凍 優先級:0 1編號:1338.2a0掛起:0 TEB:7ffde000解凍 優先級:0 2編號:1338.1fd4掛起:0 TEB:7ffdd000 解凍 優先級:0 3標識:1338.17e8掛起:0 TEB:7ffda000 解凍 優先級:0 4編號:1338.1148掛起:0 TEB:7ffd9000 解凍 優先級:0 5編號:1338.b1c掛起:0 TEB:7ffd7000解凍 優先級:0 6標識:1338.f94掛起:0 TEB:7ffd4000解凍 優先級:0 7編號:1338.11b4掛起:0 TEB:7ff4f000 解凍 優先級:0 8編號:1338.1814掛起:0 TEB:7ff4e000 解凍 優先級:0 9編號:1338.1cc4掛起:0 TEB:7ffdb000 解凍 優先級:0 10編號:1338.1e48掛起:0 TEB:7ffd5000 解凍 優先級:0 11編號:1338.1a5c掛起:0 TEB:7ff4c000 解凍 優先級:0 12編號:1338.1874掛起:0 TEB:7ff4b000 解凍 優先級:0 13編號:1338.1498掛起:0 TEB:7ff4a000 解凍 優先級:0

這裏的結果分析 - ! v:

analyze

+0

什麼如果在Visual Studio中打開故障轉儲文件,會發生什麼情況? –

+0

我們的應用程序使用.NET 3.5和VS2008,因此不能以這種方式打開(據我所知,只能啓動.NET 4和VS2010)。 –

+0

不知道這是你的問題,但通常從崩潰的應用程序本身創建一個迷你轉儲是[不可靠](http://msdn.microsoft.com/en-us/library/ms680360%28VS.85%29 .aspx)(參見備註部分)。 –

回答

2

WinDbg可能是加載了錯誤版本的mscorwks DLL。嘗試使用。cordll -lp明確地告訴它的WinDbg CLR調試模塊應該加載,也看到這個博客帖子:Issues Debugging Managed Code in WinDbg with SOS and PSSCOR2 (e.g. "Failed to request ThreadStore")

+0

試過了,沒有幫助。我開始認爲minidump類型可能是原因。 –

+0

我認爲你是正確的,MiniDumpWithPrivateReadWriteMemory可能只是不足以獲得你想要的信息。 – floyd73

+0

我想要的信息是託管的異常,並可能在崩潰時調用堆棧。 –