解密.NET clr20r3exception参数P1..P10
我试图破译与应用程序遇到exception时写入事件日志的clr20r3
相关联的P1 … P10参数的含义。
我能find的最好的是:
- P1 :主机进程( 例如
w3wp.exe
) - P2 :主机进程版本( 例如
6.0.3790.1830
) - P3 :??? ( 例如
42435be1
) - P4 :引发exception的程序集( 例如
mrtables.webservice
) - P5 :程序集版本( 例如
2.1.2.0
) - P6 : ( 例如
4682617f
) - P7 : ( 例如
129
) - P8 : ( 例如
50
) - P9 :引发的exceptiontypes( 例如
system.argumentexception
) - P10 : ( 例如
NIL
)
谷歌searchclr20r3提供了数以千计的样本参数值,从中可以尝试派生一个模式。
但是我希望能够提供关于参数含义的文档,而不是受过教育的猜测。
编辑:虽然我可以希望规范的文档,我真的很高兴看到exception被抛出,在哪一行,完成一个堆栈跟踪。
这里是沃森桶的信息
- exe文件名称
- exe文件程序集版本号
- 埃克文件邮票
- exe文件的完整程序集名称
- 错误汇编版本
- 错误汇编时间戳
- 错误组装方法def
- 错误方法IL错误方法内的偏移量
- exceptiontypes
这里也是一个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
P7和P8是找出P9exception提出的重要位置。 使用P4知道要查找什么程序集。 运行ildasm.exe并打开该程序集。 文件+转储,勾选“令牌值”checkbox,确定并保存.il文件的某个地方。
在文本编辑器中打开文件。 P7给你的方法令牌,它从0x06开始,产生令牌值“06000129”。 search:
.method /*06000129*/
哪个给你的方法名称,从那里查找find.class,给你的类名称。
P8给你的IL抵消。 从find的.method,寻找引发exception的指令IL_0050。 把它映射回你的源代码有点棘手,但你可能会想出来。 必要时使用reflection器。
通常,为AppDomain.UnhandledException
编写一个事件处理程序,以避免对这些Watson故障存储桶进行反向工程的痛苦。 logginge.ExceptionObject.ToString()
的值以获取exception消息和堆栈跟踪。
- CallContext.LogicalGetData VS. CallContext.GetData
- 回发或callback参数无效。 事件validation使用'<pages enableEventValidation =“true”/>'
- WPF中的GroupBox标题是否会吞下鼠标点击?
- 如何在dynamicbutton上创builddynamicbutton点击事件?
- 如何模拟Windows关机进行debugging?
- -1 * int.MinValue == int.MinValue ?? 这是一个错误?
- 使用reflection发现派生types
- 通过任意深度的名称查询XDocument的元素
- 什么是GUID的string长度?