我们的一个.NET 2.0应用程序开始随机消失。事件日志中没有记录,Dr。Watson不会产生崩溃转储,也没有任何内容......
如何排查此应用程序?
答案 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