2010-10-29 25 views
71

我试图破译的P1的意义......与当我的应用程序遇到一个异常写入到事件日志中clr20r3相关的P10参数。破译.NET clr20r3例外参数P1..P10

我已经been able to find的最好的是:

  • P1:托管进程(如w3wp.exe
  • P2:宿主进程的版本(如6.0.3790.1830
  • P3:??? (例如42435be1
  • P4:从该异常升温的组件(例如mrtables.webservice
  • P5:所述组件版本(例如2.1.2.0
  • P6: ??? (例如4682617f
  • P7:??? (,例如129
  • P8: (例如50
  • P9:异常类型凸起(例如system.argumentexception
  • P10:??? (例如NIL

Googling for clr20r3提供数千采样的参数值,从该人可以尝试导出的图案。

但我希望有关参数的含义文档,而不是猜测。


编辑:虽然我也希望规范的文档,我真的很高兴看到抛出异常,在什么线,完成一个堆栈跟踪。

回答

67

这里是沃森水桶信息

  1. Exe文件名称
  2. Exe文件集版本号
  3. Exe文件邮票
  4. EXE文件全组装名
  5. 断裂作用组件版本
  6. 错误组装时间戳
  7. Fau lting组装方法DEF
  8. 断裂作用方法IL偏移的断层方法
  9. 异常类型

内,并且还这里是在相同的一个MSDN制品。

样品:

Problem Signature 01: devenv.exe 
    Problem Signature 02: 11.0.50727.1 
    Problem Signature 03: 5011ecaa 
    Problem Signature 04: Microsoft.VisualStudio.SharePoint.Project 
    Problem Signature 05: 11.0.60226.0 
    Problem Signature 06: 512c2dba 
    Problem Signature 07: 18a8 
    Problem Signature 08: 1d 
    Problem Signature 09: System.NullReferenceException 
+2

你碰巧有一个记录了沃森桶的其余部分引用链接?链接的文章只提到了其中的三个(并且只是偶尔提及它们*“例如,存储区P4描述错误模块,存储区P9显示未处理的异常的类型,存储区P8表示IL原本异常被抛出。“*) – 2010-10-29 15:27:32

+2

我加入了一个关于它的 – Kiquenet 2014-07-17 09:56:18

100

P7和P8是找出其中P9异常发生重要的。使用P4知道要查找的组件。运行ildasm.exe并打开该程序集。文件+转储,勾选“令牌值”复选框,确定并将.il文件保存在某处。

在文本编辑器中的文件。 P7为您提供方法标记,它以0x06开头,生成标记值“06000129”。搜索:

.method /*06000129*/ 

其中给你的方法名称,从那里查找找到.class,给你类名。

P8为您提供了IL偏移。从找到的.method中,查找引发异常的指令的IL_0050。将它映射回源代码有点棘手,但你可能会弄清楚。必要时使用反射器。

一般来说,写的事件处理程序AppDomain.UnhandledException避免逆向工程这些沃森崩溃桶的痛苦。记录e.ExceptionObject.ToString()的值以获取异常消息和堆栈跟踪。

+2

如果在库代码中出现异常的样品,你可能需要的堆栈跟踪反正要弄清楚你的代码的是在堆栈上。 (会很好,如果微软将修改对话框是更好的。NET) – 2010-10-30 22:28:17

+1

除了处理UnhandledException,这也有助于try/catch语句直接在主,因为有时在安装UnhandledException处理程序之前的问题发生。 – 2012-04-03 18:28:47

+0

我认为这将救我我的朋友。我有一个ASP.NET应用程序停留在我的膝盖上,导致应用程序池崩溃 - 并且在崩溃时间周围记录了一个错误列表“CLR20R3”,其中有一堆“P”值。这可能很麻烦,但它可能会使我找到一个解决方案,但最终我将不得不修改此代码并获得一些真正的日志记录。 – 2013-04-02 10:26:05