c# - 如何分析Windows Crash Reporter生成的WERInternalMetadata.xml文件?

标签 c# .net crash windows-error-reporting

一个 .Net 4.0 应用程序不断为用户崩溃,但就他而言,我无法重现该错误。他附上了 Windows Crash Reporter 生成的 WERInternalMetadata.xml 文件。通过打开它,我发现它是一个 System.IO.FileNotFoundException 导致软件崩溃,但是,该函数中没有调用会抛出这种异常的函数,所以问题出在其他地方或更深。

这是文件中“最有趣”的部分。它包含(十六进制)数字,但我无法找出它们的含义。

<ProblemSignatures>
    <EventType>CLR20r3</EventType>
    <Parameter0>rstvshowtracker.exe</Parameter0>
    <Parameter1>1.0.3842.33258</Parameter1>
    <Parameter2>4c374e79</Parameter2>
    <Parameter3>mscorlib</Parameter3>
    <Parameter4>4.0.0.0</Parameter4>
    <Parameter5>4ba1da6f</Parameter5>
    <Parameter6>1620</Parameter6>
    <Parameter7>14</Parameter7>
    <Parameter8>System.IO.FileNotFoundException</Parameter8>
</ProblemSignatures>

有没有办法找出导致异常的代码,或者至少找出比 FileNotFoundException 更多的细节?

最佳答案

首先,这是 WER 跟踪中的内容:

<Parameter0>rstvshowtracker.exe</Parameter0> - your exe
<Parameter1>1.0.3842.33258</Parameter1> - version of your exe
<Parameter2>4c374e79</Parameter2> - exe timestamp
<Parameter3>mscorlib</Parameter3> - assembly / module
<Parameter4>4.0.0.0</Parameter4> - assembly version
<Parameter5>4ba1da6f</Parameter5> - assm timestamp
<Parameter6>1620</Parameter6> - methodDef token of faulting method 
<Parameter7>14</Parameter7> - IL offset of faulting instruction
<Parameter8>System.IO.FileNotFoundException</Parameter8> - exception

您可以使用 WinDBG 和 SOS 找出该方法是什么(例如 1620)。请参阅此处的示例,了解如何执行此操作: Link

...或者,您可以在应用程序中连接 unhandledException 事件,并将异常堆栈跟踪打印到日志文件中,以查看导致问题的原因;例如

static void MyHandler(object sender, UnhandledExceptionEventArgs args) 
{
   Exception e = (Exception) args.ExceptionObject;
   // print out the exception stack trace to a log
}

public static void Main() 
{
   AppDomain currentDomain = AppDomain.CurrentDomain;
   currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
}

关于c# - 如何分析Windows Crash Reporter生成的WERInternalMetadata.xml文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218649/

相关文章:

iphone - 可以在后台线程上调用dawRect:导致崩溃吗?

ios - iOS 应用程序崩溃报告

c# - 使用 EWS 托管 API 将 .msg 文件上传到 Exchange Server

c# - Thread.Sleep() 的替代品

c# - ReSharper 5 禁用解析 View

.net - 为什么 IPAddress.MapToIPv4() 会抛出 ArgumentOutOfRangeException?

c# - ObjcRuntime.Selector 不适用于预期对象(xamarin)

c# - TabControl.SelectedItem 不是 TabItem? RelativeSource 绑定(bind)失败

c# - 如何使 DataContractJsonSerializer 将对象序列化为字符串?

ios - IOS 开发新手,点击评论单元格 Thread 1 : signal SIGABRT and terminating app due to uncaught exception 时崩溃