2009-08-04 13 views
4

我注意到很多桌面應用(如Firefox,Google Chrome,VS 2008等)都有一個崩潰轉儲,可以發送給軟件供應商進行分析。我打算自己創建這樣的崩潰轉儲。我在做.Net什麼:軟件崩潰時收集信息

什麼是收集什麼數據的最佳實踐,以便收集的數據足以重現和修復錯誤,但沒有更多?

回答

5

我收集異常名稱,堆棧跟蹤並詢問客戶在崩潰時正在做什麼。通常這就夠了。

此外,您可以與Microsoft建立帳戶,以獲取您的應用程序崩潰的調試數據,其Windows Error Reporting

+1

用於Windows錯誤報告的+1。當你的應用程序真的崩潰時,你可以輕鬆地使用.NET來獲取信息 - 讓Windows將它發送給Microsoft,然後再獲取詳細信息。 – STW 2009-08-11 21:43:44

3

我建了一個記錄系統直接報告到我的bug數據庫,並報告了以下信息:

有關計算機和運行環境
  • 非身份信息(如Windows版本,某些REGIONALE設置,量內存,CPU類型等)
  • 堆棧追蹤以及有關異常本身
  • 加載的程序集,版本號
  • 加載的DLL的不在組件(你當一個dll由Skype注入新的知識漢DLE快捷鍵調用可能弄亂自己的程序)

表單首先彈出,用戶可以檢查一切,是要發送,並可以選擇性地識別他/她自己+寫一個說明他/她問題發生時正在進行。如果提供了一封電子郵件,用戶將收到一封電子郵件以跟蹤錯誤報告。

您應該努力使日誌記錄儘可能非侵入性,並且足夠詳細,您至少可以確定從何處着手。

我目前正在構建一個日誌系統,可以爲多次遇到相同問題的用戶啓用,其中最後N個日誌項可以附加到錯誤報告,其中包含代碼流(方法來電,退貨,例外等)。

2

爲什麼不使用微軟已經提供的迷你轉儲框架。我建議查看MiniDumpCallback和MiniDumpWriteDump函數,這些函數允許應用程序使用其他應用程序特定的數據來擴充迷你轉儲。