解密 .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.exeP2:托管进程版本(例如 6.0.3790.1830P3:??? (例如 42435be1P4:引发异常的程序集(例如 mrtables.webserviceP5:程序集版本(例如 2.1.2.0P6:??? (例如 4682617fP7:??? (例如 129P8:??? (例如 50P9:引发的异常类型(例如 system.argumentexceptionP10:??? (例如 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的主要内容,如果未能解决你的问题,请参考以下文章

WIN7 出现错误CLR20r3 怎么解决

问题事件名称:CLR20r3 (已经装了net framework 3.5.1)

程序停止工作,问题事件名称:CLR20r3

运行Auto CAD 2010 问题事件名称:CLR20r3

安装了一个软件,问题事件CLR20r3

问题事件名称CLR20r3 OS 版本6.1.7601.2.1.0.768.2 区域设置 ID 2052