2008-09-09 40 views
6

我已經有一段時間在生產Windows應用程序了,並且它已設置爲在發出異常時向我們發送錯誤報告。其中大部分都是相當具有描述性的,並且幫助我很快找到問題(我使用MS應用程序異常塊)。.NET生產調試

有幾次,我有報告指出我無法複製的問題,而且似乎只發生在少數客戶端計算機上。

我沒有物理訪問這些客戶機,有什麼策略可以用於調試?在代碼中構建一些跟蹤代碼會更好嗎,還是有其他一些替代方法?

謝謝。

編輯:我應該已經更清楚了:我得到的錯誤報告確實有堆棧跟蹤,但由於它是生產代碼,它並不表示導致異常的確切線,只是它的方法被拋出。

回答

2

一種方法是生成一個儘可能靠近拋出異常點的(小型)轉儲文件。這article談論如何從託管代碼做到這一點。

然後你可以轉儲文件加載到Visual Studio或WinDbg中並與SOS

1

我一直用這個module從傑夫未處理的異常,向我發送一封電子郵件,堆棧跟蹤等

2

你是在正確的軌道上。您需要創建一個在本地記錄動作/異常的跟蹤模塊。

然後,您可以擁有一個按鈕或一個菜單選項,用戶可以單擊該按鈕或菜單選項,在問題發生時自動將此信息發送給您,或者他們可以選擇獲取該文件以便它們可以將其傳輸以任何其他方式給你。

您甚至可以內置診斷代碼來對系統運行完整性檢查並向您發送報告(可能會運行所有單元測試以查看它們是否在該系統上運行)。

1

援助智能從Gurock Software檢查檢查它派上用場,很多次我。在分析日誌文件時,放入.NET應用程序非常簡單,並且可以爲您提供強大的控制功能。它具有日誌級別,允許您關閉某些功能,除非在某些情況下,所以您不會失去性能。

他們甚至有服務器軟件,您的軟件可以連接到保存日誌,當你沒有完全訪問機器。例如,您可以在www.yourdomain.com上運行服務器。你的軟件將有一個配置選項來打開調試。 Smart Inspect將被配置爲將日誌數據發送到您的服務器(也可以選擇本地文件),以便無論軟件運行在何處都可以實時記錄日誌。

Smart Inspect的配置非常簡單,並且有很多功能可以幫助您。我已經使用它來即時調試高影響力的多線程服務器應用程序,而無需關閉機器。它具有跟蹤不同進程,線程和機器的所有工具。