我们的应用程序在启动期间崩溃 - 无一例外,只有“发送报告”

时间:2011-04-18 13:31:42

标签: wpf exception crash

我们的应用程序可能在加载过程中崩溃,只在某些机器上,我没有任何异常,只有Windows“发送报告”对话框。

是否有某种方法可以获取有关导致应用程序崩溃的更多信息? 在“发送报告”对话框中,只有:

AppName:evox.wpfclient.exe
AppVer:1.0.0.0
ModName:kernel32.dll ModVer:5.1.2600.5781
抵消:00012afb

2 个答案:

答案 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事件进行记录然后崩溃 - 不要尝试恢复并继续执行。