解释Windows错误报告输出

时间:2015-11-09 17:58:10

标签: c# windows-error-reporting

我正在尝试跟踪在运行Windows 7 64位的目标计算机上发生的错误,该错误发生在使用Visual Studio 2008编写的C#WinForms应用程序中。我必须继续使用事件查看器中的Windows错误报告输出。我在这里找到了很多有用的信息:http://www.codeilove.com/2012/09/debugging-using-windows-error-reporting.html

Problem signature:
P1: myprogram.exe // filename of the executable
P2: 1.44.0.0 // assembly version for the executable in P1
P3: 560be2df // assembly timestamp for the executable in P1
P4: mscorlib // assembly where the fault occurred
P5: 2.0.0.0 // assembly version for the assembly in P4
P6: 4ca2b889 // assembly timestamp for the assembly in P4
P7: c43 // token for the method where the fault occurred
P8: 59 // IL offset into the method specified in P7
P9: System.FormatException //  name of the exception that caused the fault

从链接看来,P7,P8和P9是最重要的,我应该能够通过寻找06000c43使用ILDASM找到“c43”的方法def。在C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorlib.dll中,我在System.Number中找到以下内容:

.method /*06000C43*/ assembly hidebysig static 
    uint64  ParseUInt64(string 'value',
                        valuetype System.Globalization.NumberStyles/*020003B6*/ options,
                        class System.Globalization.NumberFormatInfo/*020003B5*/ numfmt) cil managed

根据这些信息,System.Number.ParseUInt64中发生了System.FormatException,对吧?我在Visual Studio中搜索了我的项目,但是找不到我的代码调用此函数的任何实例。我从哪里开始?

我有一个Application.ThreadException的顶级异常处理程序,它将未处理的异常记录到文件中。在这种情况下,我的应用程序崩溃,我的日志文件中没有任何内容。是否可以安全地假设此异常发生在我的UI以外的线程中?

1 个答案:

答案 0 :(得分:0)

从Vista SP1开始,您可以将Windows错误报告配置为collect local crash dumps。只需按照该文章中的说明在目标计算机上设置注册表设置,然后等待程序再次崩溃。之后,检查您已配置为DumpFolder的目录。你应该在那里找到一个.dmp文件。在WinDbg或Visual Studio中打开它,您应该能够看到发生异常的完整堆栈跟踪。