我们的应用程序可能在加载过程中崩溃,只在某些机器上,我没有任何异常,只有Windows“发送报告”对话框。
是否有某种方法可以获取有关导致应用程序崩溃的更多信息? 在“发送报告”对话框中,只有:
AppName:evox.wpfclient.exe
AppVer:1.0.0.0
ModName:kernel32.dll
ModVer:5.1.2600.5781
抵消:00012afb
答案 0 :(得分:3)
处理启动应用的类中的AppDomain.CurrentDomain.UnhandledException事件。通常是program.cs。
添加
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
然后在主类之外
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
if (e.ExceptionObject is Exception)
_logger.FatalException("Unhandled exception", (Exception)e.ExceptionObject);
else
_logger.Fatal("Unhandled exception: {0}", e.ExceptionObject);
if (_program != null)
_program.Exit();
}
到启动文件,看看它是否捕获了您的异常。当然改变方法以适合您的目的。
答案 1 :(得分:1)
您的应用程序启动时首先要做的事情是尝试订阅活动System.AppDomain.CurrentDomain.UnhandledException
。在事件处理程序中,您可以在应用程序实际崩溃之前记录异常。
如果您的应用程序在没有记录的情况下仍然崩溃,那么.NET框架可能存在问题。在这种情况下,您应该在Windows管理工具事件查看器中看到一个事件。
注意:您应该只使用UnhandledException事件进行记录然后崩溃 - 不要尝试恢复并继续执行。