【问题标题】:How to debug .NET error logged in an Event Viewer?如何调试事件查看器中记录的 .NET 错误?
【发布时间】:2011-02-02 23:41:28
【问题描述】:

您好,我发现我的应用程序导致了一些错误,这些错误记录在事件日志中

它说:

NET Runtime 2.0 Error 

    EventType clr20r3, P1 *****.exe, P2 1.0.0.0, P3 4b2a572f, P4 system.web.services, P5 2.0.0.0, P6 4889df18, P7 bc, P8 65, P9 system.net.webexception, P10 NIL.

我怎样才能知道发生了什么?我已经在本地尝试过该应用程序,一切正常。

【问题讨论】:

    标签: .net windows debugging logging


    【解决方案1】:

    您的应用因未处理的异常而崩溃。 Watson 日志不足以找到原因。为 AppDomain.CurrentDomain.UnhandledException 事件编写一个事件处理程序,让它将 e.ExceptionObject.ToString() 写入事件日志,这样您将获得一个很好的堆栈跟踪,向您显示它被轰炸的原因和位置。

    【讨论】:

      【解决方案2】:

      您能详细描述一下它的应用类型吗?它在做什么,是交互式的还是非交互式的?

      实际错误是system.net.webexception - 这是与网页或网络服务通信的某种形式的问题。这本身表明,如果在您尝试时它工作正常,它可能会出现间歇性错误。

      远程运行时配置错误或配置错误 - 与您的环境不同。例如,您是否使用了在远程运行应用程序时不可用的内部 DNS 条目?

      您将希望捕获应用程序中的所有异常(例如在您的 main 方法中的整体 try { } catch { })并将异常记录到文件中,或者通过电子邮件将它们发送给您自己,这样您就可以看到更详细地了解正在发生的事情。

      【讨论】:

      • 是的。它是一个连接到服务器 1 的应用程序,获取一个 XML 文件。然后连接到一个 MS 报告服务获取一些报告,最后连接到服务器 3 并发送一些生成的文件跨度>
      • 可能是它获取的报告花费的时间超过了 Web 服务客户端等待的时间,并且正在超时?
      • 是的,这可能是原因..但我不明白..因为我在 try catch 子句中有这段代码
      • 在这种情况下,不是那段代码导致异常 - 除非您重新抛出它。将 main 方法的内容包含在 try/catch 中,并以更有用的方式处理异常 - 例如将堆栈跟踪写入机器上的文件。
      • 啊,你的意思是用 try catch 包围整个代码。我想你的意思只是为了调试目的。(否则它将是一个 try catch 项目:D)
      【解决方案3】:

      它看起来像一个未处理的异常。如果它是在 Web 应用程序或服务中生成的,您可以尝试在 global.asax 文件中放置一个全局异常处理程序。有关示例,请参阅here。您可以捕获错误并将一些更好的信息输出到事件日志。

      【讨论】:

      • 据我从错误日志中可以看出,它是一个 .exe,因此是一个 Windows 应用程序,而不是一个 Web 应用程序。
      • 问题是应用是系统调度器正在启动的控制台应用
      • @Andy.. 正确的 Andy.. 它是一个直接驻留在机器上的 .exe
      • 如果它是在 Windows 应用程序中生成的 Web 异常,那么您应该能够使用 Try..Catch 块包装对 Web 方法的调用,并将异常的详细信息写入事件日志或日志文件。
      • 不知道为什么我得到了-1。当 ASPX 应用程序中发生未处理的异常时,IIS 工作进程 w3wp.exe 中可能会发生 .NET 运行时错误。例如,我从其中一台 Web 服务器上的应用程序事件日志中获取的一个:EventType clr20r3、P1 w3wp.exe、P2 6.0.3790.3959、P3 45d6968e、P4 rtbase、P5 1.0.0.0、P6 4909e67b、P7 61 , P8 321, P9 pe.pexception, P10 NIL.
      【解决方案4】:

      这是您的事件日志条目中的简单解释

      P4 system.web.services -  module that was throwing the exception 
      P9 system.net.webexception  - Exception Type
      P8 65 - IL Offset where the exception was thrown
      

      这些是用于获取异常调用堆栈的 Watson 存储桶。从 .NET 2.0 开始,Watson 报告就有这些信息。

      上面的解释是MSDN article

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 2011-04-05
        • 2019-02-17
        • 2022-11-10
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多