2011-05-16 69 views
5

我在Windows服務器2008上運行調試診斷工具。它創建了轉儲文件。 因爲我的asp.net應用程序有時會發生異常。如何調試崩潰的轉儲文件?

我需要一步一步的指令如何調試轉儲文件。我是否需要在生產服務器或本地進行調試?我需要什麼?如何配置?

如何確定應用程序中的問題?

如何閱讀轉儲文件還有其他方法嗎?

這裏是我發現它有大約轉儲文件相當不錯的解釋後,但他們並沒有解釋調試部分

http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx

回答

9

所有你需要調試轉儲WinDbg的,這可以從以下網址下載Microsoft和隨框架一起提供的SOS。

啓動WinDbg並從文件菜單中加載轉儲文件。這會告訴你一些關於轉儲的初始信息。這會告訴你你正在看的那種轉儲。

使用命令.symfix設置符號。

使用命令.loadby sos clr(.NET 4)或.loadby sos mscorwks(以前版本的.NET)加載SOS。

使用!threads命令查看轉儲文件中的線程。注意最右邊的例外欄。如果您在此列中發現任何異常,請使用!pe <EXCEPTION OBJECT>命令獲取詳細信息。

欲瞭解更多信息,請閱讀Tess' blog上的一些帖子。

+0

Brian我在我的服務器上有每個文件大約400 MB的DMP文件。我在本地機器windbg上安裝。在我試圖打開其中一個文件後,我得到了這個錯誤 - ***錯誤:無法找到符號文件。默認爲kernel32.dll導出符號 - kernel32!RaiseException + 0x58 :.我可以在服務器上使用windbg嗎?如何加載符號? – 2011-05-16 18:52:29

+0

@Michael:你可以在服務器上使用WinDbg,你不需要安裝任何東西。只需從USB棒或網絡共享中複製或運行WinDbg即可。 .symfix命令將指示WinDbg從Microsoft符號服務器獲取符號。如果在調試時無法訪問互聯網,則可以下載符號。詳情請參閱WinDbg幫助。 – 2011-05-17 03:30:41

1

我認爲你的問題沒有簡單的答案,因爲有這麼多不同的場景。

然而,我可以給你一些基本的流程,但你需要一定要看書或網站來找到更多的信息。

首先,如果您有該應用程序的pdb文件和源代碼,請嘗試加載它們並將它們指向源代碼。 一旦你有他們,嘗試通過輸入'lm'來查看所有加載的模塊,如果你沒有看到你的模塊,你可以通過輸入'.reload/f your-module.exe'來加載它。

二,在windbg中加載崩潰轉儲後,請嘗試'analyze -v'命令。

如果您配置正確,windbg可能會指出確切的源代碼行,它面臨崩潰。

最後,當您配置符號時,還請添加Microsoft符號服務器以簡化您的調試會話。

有很多書籍和網站,你可以幫忙,但我認爲codeproject教程系列是相當不錯的。

這是第一個系列。 http://www.codeproject.com/KB/debug/cdbntsd.aspx