解密 .NET clr20r3 异常参数 P1..P10
Posted
技术标签:
【中文标题】解密 .NET clr20r3 异常参数 P1..P10【英文标题】:Deciphering the .NET clr20r3 exception parameters P1..P10 【发布时间】:2011-05-02 10:52:15 【问题描述】:我正在尝试解读与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 提供了数千个样本参数值,人们可以从中尝试得出一个模式。
但我希望获得有关参数含义的文档,而不是有根据的猜测。
编辑:虽然我希望获得规范文档,但我真的很高兴看到异常被抛出,在哪一行,并带有堆栈跟踪。
阅读奖励
Unhandled exception that caused the application to crash with "EventType clr20r3, P1 w3wp.exe" in the log, but no details there (在遇到问题时寻求帮助,同时我们要求对参数的含义进行规范的解释)【问题讨论】:
Unhandled exception that caused the application to crash with "EventType clr20r3, P1 w3wp.exe" in the log, but no details there的可能重复 【参考方案1】:P7 和 P8 是找出引发 P9 异常的重要位置。使用 P4 了解要查找的程序集。运行 ildasm.exe 并打开该程序集。文件+转储,勾选“令牌值”复选框,确定并将.il文件保存在某处。
在文本编辑器中打开文件。 P7 为您提供方法标记,它从 0x06 开始,生成标记值“06000129”。搜索:
.method /*06000129*/
它为您提供方法名称,从那里查找 .class,它为您提供类名称。
P8 为您提供 IL 偏移量。从找到的 .method 中,查找引发异常的指令的 IL_0050。将其映射回您的源代码有点棘手,但您可能会弄明白。必要时使用反射器。
一般来说,为AppDomain.UnhandledException
编写一个事件处理程序,以避免对这些 Watson 崩溃存储桶进行逆向工程的痛苦。记录e.ExceptionObject.ToString()
的值以获取异常消息和堆栈跟踪。
【讨论】:
如果异常发生在库代码中,您很可能需要堆栈跟踪来确定您的哪些代码在堆栈上。 (如果 Microsoft 将该对话框修改为更适合 .NET,那就太好了。) 除了处理 UnhandledException 之外,它还有助于在 Main 内部尝试/捕获,因为有时问题发生在安装 UnhandledException 处理程序之前。 我认为这会拯救我的朋友。我有一个 ASP.NET 应用程序落在了我的膝上,它不断使应用程序池崩溃 - 并且在崩溃时间前后记录了一个错误列表CLR20R3
和一堆 P
值。它可能很混乱,但它可能会引导我找到解决方案,但最后我将不得不修改这段代码并进行一些真正的日志记录。
如果可以的话,+10 非常有用 - 在我的情况下,这是一个 *** 异常,我的 catch 博客没有执行。
在此之后,我发现我们的代码崩溃的函数是一个抽象虚函数.. method /*06003452*/ public hidebysig newslot abstract virtual instance int32 Read([in][out] uint8[] buffer, int32 offset, int32 count) cil managed // 方法结束 Stream::Read【参考方案2】:
这是关于 Watson Buckets 的信息
-
Exe 文件名
Exe 文件程序集版本号
Exe 文件戳
Exe 文件完整程序集名称
错误的程序集版本
错误的程序集时间戳
错误装配方法定义
故障方法 IL Offset 在故障方法中
异常类型
这里还有一篇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
【讨论】:
你会碰巧有一个参考链接来记录其余的 watson 存储桶吗?链接的文章只提到了其中三个(并且只是在传递 时碰巧提到了它们,例如,bucket P4 描述了故障模块,bucket P9 显示了未处理的异常类型,bucket P8 表示 IL 偏移量在最初抛出的异常。”) 我添加了一个关于它的示例以上是关于解密 .NET clr20r3 异常参数 P1..P10的主要内容,如果未能解决你的问题,请参考以下文章
问题事件名称:CLR20r3 (已经装了net framework 3.5.1)