我有一个.NET应用程序,我已完成并在客户机器上运行。我得到报告,它偶尔会崩溃与Windows错误框
xxx程序已停止工作,一个问题导致程序停止正常工作。如果有可用的解决方案,Windows将关闭该程序并通知您。
我正在尝试跟踪此问题的根源。我认为这是一个未处理的例外,但我无法找到哪里。我正在寻找帮助来跟踪来源的输入。虽然程序是.NET,但我使用的是一些非托管资源,比如OPC和我写的一个小包装,但我觉得我很好地覆盖了编组。该应用程序几乎每周7天,每天24小时运行,目前可能每4-10天崩溃一次。
我正在考虑的一件事是订阅AppDomain.UnhandledExceptionEventHandler
并将堆栈跟踪记录到文件中。这有可能吗?如何去做呢?
由于
答案 0 :(得分:1)
我会创建一个日志记录系统。即使只是尝试捕获从页面获取基本错误。我之前使用过以下代码在服务器上存储日志文件。
public void logError(string errorString)
{
try
{
// Takes unknown errors and logs them to the log file
string user = HttpContext.Current.User.Identity.Name.ToString();
string FileLine = user + ", " + DateTime.Now.ToString() + ", " + errorString;
string filename = HttpContext.Current.Server.MapPath("../Log/error_log.txt");
using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename, true))
{
file.WriteLine(FileLine);
file.WriteLine("---------------------------------------");
}
}
catch (Exception ex)
{
// send email, or another notification
}
}
你可以这样称呼:
try
{
//function code
}
catch (Exception ex)
{
logError(ex.ToString());
}