程序崩溃时如何识别问题而不显示错误?

Jos*_*osh 9 c# debugging crash-dumps

当我的应用程序崩溃并关闭时,请告诉我需要遵循的步骤,显示包含"不发送"和"发送错误报告"按钮的对话框.

除了查看事件查看器以解决此问题,我还能做些什么?

谢谢

Gro*_*roo 14

  1. 您可以try/catch/finallyMain()入口方法的主体周围添加构造.

  2. 对于WinForms,您可以ThreadException在Application.Run()之前添加一个处理程序,以捕获WinForms UI事件处理程序中抛出的异常:

    Application.ThreadException +=
       new ThreadExceptionEventHandler(Application_ThreadException);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 可以使用以下方法捕获所有其他未处理的异常:

    AppDomain.CurrentDomain.UnhandledException +=
       new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    
    Run Code Online (Sandbox Code Playgroud)

    但值得一提的是,这只允许您记录/报告异常 - 一旦退出此最终处理程序,就无法阻止应用程序关闭.

  4. Visual Studio也可以配置为中断第一次机会异常,外部调试器(如带有托管SoS扩展的WinDbg)也可以捕获第一次机会异常(http://www.codeproject.com/KB/debug/windbg_part1.aspx) .

此外,使用日志框架(如log4net)向应用程序添加有用的日志记录,并在应用程序关闭之前转储异常信息.