c#如何记录意外程序退出

问题描述:

我有一个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

最适合您的方法是考虑全局异常。您可以捕捉先机例外,这将抓住每一个出现在你的应用程序异常,可作为简单地完成如添加下面的代码:

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

而且有关处理全局例外,你可以参考更多详细信息到this真的很有帮助的文章。

+0

这是一个很好的提示。 。 – Simorgh

我可以回答我自己的问题。

不幸的是我遗漏了我认为不相关的问题的一个细节。 在任何用户登录之前,应用程序在系统引导时由Windows任务计划程序启动。任务属性中有一个复选框,如果任务终止时间超过3天,则会有一个复选框。我忘了取消它:(。

谢谢您的贡献。