如何解决刚刚消失的.NET应用程序?

时间:2009-10-20 13:13:49

标签: .net debugging

我们的一个.NET 2.0应用程序开始随机消失。事件日志中没有记录,Dr。Watson不会产生崩溃转储,也没有任何内容......

如何排查此应用程序?

5 个答案:

答案 0 :(得分:5)

1)将事件处理程序附加到AppDomain.UnhandledException事件并记录异常对象。

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

2)附加线程异常处理程序

Application.ThreadException +=
  new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

对于WPF和Silverlight应用,您可以使用更多异常处理程序,例如:分别是Application.DispatcherUnhandledException和Application.UnhandledException,但在这种情况下,您不感兴趣。我把它们包括在内是为了完整。

答案 1 :(得分:3)

我们遇到了类似的问题。我们有一个AppDomain.UnhandledException的事件,但它甚至跳过了这个。事实证明,当我们测试剪贴板内容时,会导致SystemAccessViolation。

如果它是相似的(EG跳过AppDomain.UnhandledException事件),那么我建议记录互操作的所有内容以及来自您的进程外部的“恶意”数据调用,并对代码进行全面检查。我们用了几个星期来跟踪它并修改了一行来修复它。

此外,在VS中启用MDA并使用它运行程序,看看是否出现错误。

答案 2 :(得分:2)

修改代码以在每个相关部分之后包含日志步骤,然后检查日志文件以查看它的位置。

如果它甚至没有开始,那么那也会告诉你一些事情......

答案 3 :(得分:0)

更多可能性:

答案 4 :(得分:0)

您可以尝试使用Elmah,这将记录几乎所有未处理的异常:

http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx