首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分析Windows Crash Reporter生成的WERInternalMetadata.xml文件?

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

Stack Overflow用户
提问于 2010-07-10 17:31:03
回答 1查看 18.2K关注 0票数 14

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

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

代码语言:javascript
复制
<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更多的细节

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-11 00:48:09

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

代码语言:javascript
复制
<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)。有关如何执行此操作,请参阅此处的示例:http://blogs.msdn.com/b/oanapl/archive/2009/01/30/windows-error-reporting-wer-and-clr-integration.aspx

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

代码语言:javascript
复制
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);
}
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3218649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档