2009-10-15 23 views
1

在我的工作場所有這個簽到程序,它只從檢入機器獲取數據並將其存儲在我們的數據庫中,但在週四突然出現錯誤報告,但只有一次在一天的隨機時間,所以當我檢測到錯誤時,我運行該程序但沒有任何反應,所以我想每5-10分鐘調試一次,看看是否發現了錯誤,看看發生了什麼,我怎麼能做這個?如何安排調試?

回答

2

伐木是你的朋友。添加大量日誌記錄(使用內置的跟蹤日誌記錄或使用某些框架,如log4net)。使用不同的日誌級別來控制你輸出多少日誌。在詳細級別中,您可以在進入和退出重要方法時進行日誌記錄,記錄輸入參數和返回值。登錄catch塊等。然後在報告下一個錯誤之後分析日誌文件。

+0

我將google用於log4net,謝謝! – Luiscencio 2009-10-15 19:16:57

2

你目前在這個應用程序中實現了什麼樣的錯誤記錄?如果沒有,您是否會考慮添加全面的應用程序日誌記錄,例如Log4Net工具?或者,如果這是一個Web應用程序ELMAH工具?

通過這種方式,您可以記錄與其詳細信息一起發生的每個錯誤,如堆棧跟蹤以追蹤問題。

0

的幾點思考:

檢查服務器的事件日誌,看看是否有任何崩潰小型轉儲你可以拉出來。這些可以告訴你很多有關程序崩潰時發生的事情(調用堆棧等)。

或者編寫一個包裝程序,它可以運行你的程序並檢測它何時失敗,然後在此刻拍攝服務器狀態的快照,這樣你可以(希望)用必要的數據重新執行任務以獲得可重複的在調試器中崩潰。

或者只是添加日誌記錄負載。您可以使用PostSharp添加跟蹤,該跟蹤會告訴您進入和退出的每種方法,以便您可以輕鬆確定哪種方法在失敗時正在運行。

而且你可以添加robustification代碼。檢查是否存在空值等問題,並且您可能會發現您已經糾正了問題,而不必知道哪個修復程序修復了它。

如果程序不是太大,只是老式和桌面檢查(閱讀打印輸出)的代碼可能會出現一些錯誤。

另一種方法(獲得更多實驗)可能是修改程序不斷運行,以便您可以將其保存在調試器中,並保留它直到遇到異常。 (運行一個循環,等待觸發器文件被刷新或者其他東西,然後啓動正常的進程 - 約5行代碼可能就足夠了)