如何分析Windows崩溃记者生成的WerInternalMetadata.xml文件?
-
13-09-2020 - |
题
.NET 4.0应用程序不断崩溃,但只是为了他,我无法重现错误。他附上了Windows崩溃记者生成的WERInternalMetadata.xml
文件。通过打开它,我发现它是一个崩溃软件的世代ocodetagcode,但是,在该函数中没有调用的函数会抛出这种异常,因此在其他地方或更深的问题上是问题。
这是文件的“最有趣”部分。它包含(十六进制)数字,但我找不到它们的意思。
<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>
.
有没有办法找出哪些代码导致异常,或者至少找出比世代odicetagcode的更多细节?
解决方案
首先,这就是这个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)的方法。请参阅此处的示例如何执行此操作: http://blogs.msdn.com/b/oanapl/archive/2009/01/30/windows-error-reporting-wer-and-clr-integration.aspx
...或者,您可以在应用程序中连接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);
}
. 不隶属于 StackOverflow