gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:29:39 24 4
gpt4 key购买 nike

我在开发一个名为 EVEMon 的开源产品,该产品是用 C# 编写的,面向 .NET 2.0 平台,我有一个用户遇到了我们无法解决的奇怪的 .NET 崩溃。

Event Type: ErrorEvent Source: .NET Runtime 2.0 Error ReportingEvent Category: NoneEvent ID: 5000Date: 4/29/2009Time: 10:58:10 PMUser: N/AComputer: removed thisDescription:EventType clr20r3, P1 evemon.exe, P2 1.2.7.1301, P3 49ea37c8, P4system.windows.forms, P5 2.0.0.0, P6 4889dee7, P7 6cd3, P8 18, P9system.argumentexception, P10 NIL.Data://hex representation of the above Description

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

是否有专门的、久经考验的技术来分析和诊断此类崩溃?如果可以,有哪些工具和技术可用于帮助调试?

特别感谢

我要特别感谢 Steffen Opel,并强调 his answer 虽然没有直接回答我提出的问题,但解决了我的代码库中的一个更大的问题,即全局错误处理缺少一个重要的组件。

最佳答案

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

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

  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 <<

关于c# - 如何对事件日志中的 .NET 2.0 错误报告消息进行故障排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/814560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com