2017-10-09 53 views
2

我有一個Windows c#程序(.net 3.5)在後臺運行在實時控制器(Windows 7 Embedded)上。c#如何記錄意外程序退出

過了幾天,這個過程終於結束了。 現在我徹底記錄了我的程序的操作和例外情況。 所有可以拋出異常的東西都被try/catch包圍,並且正在寫入日誌文件,並且記錄器是否有寫入到Windows事件日誌的異常。

但是,日誌中沒有提示可能導致程序終止的異常。

是否有其他技術來捕獲和記錄程序終止?

到目前爲止,我無法在在線調試會話中重現該錯誤。

程序本身很簡單。 它使用兩個秒錶,併產生一個線程與實時程序進行通信。它寫入一個'alive'布爾值,一個'錯誤'整數並讀取另一個整數。日誌文件大小限制爲10 MB。如果達到大小,文件將被重命名爲日期,並打開一個新文件。超過30天的文件將被刪除。

我檢查了Windows事件日誌並找不到與該程序直接相關的任何內容。

你會怎麼做?

+2

來看看全球的異常處理程序,mayby能抓到的東西。 – BWA

+0

@BWA同意,這將是我的建議了。的 – rmjoia

+0

可能的複製[如何捕捉在.NET應用程序中的所有異常/崩潰](https://stackoverflow.com/questions/82483/how-to-catch-all-exceptions-crashes-in-a-net-app) – Sinatr

回答

0

最適合您的方法是考慮全局異常。您可以捕捉先機例外,這將抓住每一個出現在你的應用程序異常,可作爲簡單地完成如添加下面的代碼:

AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) => 
{ 
    Debug.WriteLine(eventArgs.Exception.ToString()); 
}; 

而且有關處理全局例外,你可以參考更多詳細信息到this真的很有幫助的文章。

+0

這是一個很好的提示。 。 – Simorgh

0

我可以回答我自己的問題。

不幸的是我遺漏了我認爲不相關的問題的一個細節。 在任何用戶登錄之前,應用程序在系統引導時由Windows任務計劃程序啓動。任務屬性中有一個複選框,如果任務終止時間超過3天,則會有一個複選框。我忘了取消它:(。

謝謝您的貢獻。