破译.NET clr20r3异常参数P1..P10

破译.NET clr20r3异常参数P1..P10,.net,exception,clr,.net,Exception,Clr,我试图解释与clr20r3相关联的P1…P10参数的含义,该参数在我的应用程序遇到异常时写入事件日志 我最好的建议是: 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.

我试图解释与
clr20r3
相关联的P1…P10参数的含义,该参数在我的应用程序遇到异常时写入事件日志

我最好的建议是:

  • 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
提供数千个示例参数值,用户可以从中尝试派生模式

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


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

额外阅读
  • (当我们要求对参数的含义进行规范性解释时,请求帮助解决问题)

以下是有关Watson Bucket的信息

  • Exe文件名
  • Exe文件程序集版本号
  • Exe文件戳
  • Exe文件完整程序集名称
  • 错误的程序集版本
  • 错误程序集时间戳
  • 故障组装方法def
  • 断层法在断层法中的偏移量
  • 异常类型
  • 这里还有一篇关于这个的文章

    样本:

      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是发现P9异常在何处引发的重要参数。使用P4了解要查找的程序集。运行ildasm.exe并打开该程序集。文件+转储,勾选“令牌值”复选框,确定并将.il文件保存在某处

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

    .method /*06000129*/
    
    它为您提供了方法名,从那里查找.class,它为您提供了类名

    P8给出了IL偏移量。在find.method中,查找引发异常的指令的IL_0050。将其映射回源代码有点棘手,但您可能会找到答案。如有必要,使用反射器


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

    您是否有记录其余watson Bucket的引用链接?链接的文章只提到了其中三个(并且只是顺便提到了它们“例如,bucket P4描述了故障模块,bucket P9显示了未处理的异常类型,bucket P8表示异常最初抛出的IL偏移量。”)我已经添加了一个关于ITI的示例。如果库代码中发生异常,您可能需要堆栈跟踪来确定堆栈中的代码。(如果Microsoft能修改该对话框使其更适合.NET,那就太好了。)除了处理未处理的异常外,在Main内部尝试/捕获也有帮助,因为有时问题发生在未处理的异常处理程序安装之前。我想这会救我的朋友。我有一个ASP.NET应用程序落在了我的膝上,它不断地使应用程序池崩溃,而一个错误列表
    CLR20R3
    和一堆
    P
    值在崩溃时间前后被记录下来。这可能会很混乱,但它可能会引导我找到一个解决方案,但最终我将不得不修改此代码并进行一些真正的日志记录。如果可以,非常有用+10-在我的情况下,这是一个StackOverFlow异常,我的catch blog没有执行。在接下来的过程中,我发现我们的代码所使用的函数是一个抽象的虚拟函数。。method/*06003452*/public hidebysing newslot抽象虚拟实例int32 Read([in][out]uint8[]缓冲区,int32偏移量,int32计数)cil管理的{}//方法流结束::的readmable重复项