如何对事件日志中的 .NET 2.0 错误报告消息进行故障排除?

2023-11-23

我正在开发一个名为的开源产品EVEMon使用 C# 编写,针对 .NET 2.0 平台,我的一位用户遇到了奇怪的 .NET 崩溃问题,而我们一直无法解决该问题。



Event Type: Error
Event Source: .NET Runtime 2.0 Error Reporting
Event Category: None
Event ID: 5000
Date: 4/29/2009
Time: 10:58:10 PM
User: N/A
Computer: removed this
Description:
EventType clr20r3, P1 evemon.exe, P2 1.2.7.1301, P3 49ea37c8, P4
system.windows.forms, P5 2.0.0.0, P6 4889dee7, P7 6cd3, P8 18, P9
system.argumentexception, P10 NIL.

Data:
//hex representation of the above Description
  

应用程序本身崩溃,但没有显示错误(尽管有错误处理 UI),上述消息已从 Windows 事件日志中复制出来。最终用户已重新安装.NET并更新到最新版本。 .PDB 文件随程序的每个发行版本一起分发,以帮助调试和测试,有问题的用户拥有正确版本的 EVEMon 的完整 PDB 文件。

是否有一种特定的、经过尝试和测试的技术来分析和诊断此类崩溃?如果是的话,有哪些工具和技术可以帮助调试?

特别感谢

我要特别感谢斯蒂芬·欧宝并强调他的回答虽然没有直接回答我提出的问题,但解决了我的代码库的更大问题,即全局错误处理缺少一个重要组件。


这就是我为最终用户解决崩溃问题的方法。

  1. 下载并安装 Windows 调试工具:http://www.microsoft.com/whdc/devtools/debugging/default.mspx

  2. 安装工具后(默认情况下它们最终会进入 C:\Program Files\)启动命令行窗口。

  3. 更改为包含 adplus 的目录(例如“C:\Program Files\Debugging Tools for Windows (x86)”)。

  4. 运行以下命令。这将启动应用程序并附加 adplus。

adplus -crash -o C:\debug\ -FullOnFirst -sc C:\path\to\your\app.exe

创建故障转储后

应用程序崩溃后,启动 WinDbg 并加载在 C:\debug 中创建的 .dmp 文件。 (文件 --> 打开故障转储)

执行这些命令来查看堆栈跟踪并希望找到问题。

加载SOS进行调试

  • .NET 4.0 之前的版本
.loadby sos mscorwks
  • .NET 4.0
.loadby sos clr

查看堆栈跟踪

!clrstack

查看更有用的堆栈跟踪

!clrstack –p

深入对象内部..也许看看是什么导致了异常

!do <address>

例如,这是应用程序因 IO 异常而随机发生故障的结果。 WinDbg 指出所引用的路径不正确。

0:009> !do 017f2b7c    
Name: System.String    
MethodTable: 790fd8c4    
EEClass: 790fd824    
Size: 124(0x7c) bytes    
 (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)    
String: \\server\path\not_here.txt
Fields:    
      MT    Field   Offset                 Type VT     Attr    Value Name    
79102290  4000096        4         System.Int32  1 instance       54 m_arrayLength    
79102290  4000097        8         System.Int32  1 instance       53 m_stringLength    
790ff328  4000098        c          System.Char  1 instance       5c m_firstChar    
790fd8c4  4000099       10        System.String  0   shared   static Empty    
    >> Domain:Value  00161df8:790d884c <<    
7912dd40  400009a       14        System.Char[]  0   shared   static WhitespaceChars    
    >> Domain:Value  00161df8:014113e8 <<
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对事件日志中的 .NET 2.0 错误报告消息进行故障排除? 的相关文章

随机推荐