解密.NET clr20r3异常参数P1..P10

时间:2010-10-29 14:27:45

标签: .net exception clr

我正在尝试破解与我的应用程序遇到异常时写入事件日志的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提供了数千个样本参数值,有人可以从中尝试派生模式。

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


编辑:虽然我可以希望获得规范文档,但我真的很高兴看到异常被抛出,在哪一行,完成堆栈跟踪。

奖金阅读

2 个答案:

答案 0 :(得分:107)

P7和P8是找出引发P9异常的重要因素。使用P4了解要查找的程序集。运行ildasm.exe并打开该程序集。文件+转储,勾选“令牌值”复选框,确定并保存.il文件。

在文本编辑器中打开文件。 P7为您提供方法令牌,它以0x06开头,产生令牌值“06000129”。搜索:

.method /*06000129*/

它为您提供了方法名称,从那里查找.class,它为您提供了类名。

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

通常,为AppDomain.UnhandledException编写一个事件处理程序,以避免对这些Watson崩溃存储桶进行逆向工程的痛苦。记录e.ExceptionObject.ToString()的值以获取异常消息和堆栈跟踪。

答案 1 :(得分:74)

以下是关于Watson Buckets的信息

  1. Exe文件名
  2. Exe文件程序集版本号
  3. Exe File Stamp
  4. exe文件完整程序集名称
  5. 错误汇编版
  6. 错误汇编时间戳
  7. 故障装配方法def
  8. 错误方法中的错误方法IL Offset
  9. 例外类型
  10. 此处还有一篇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