Ich versuche, die Bedeutung der P1 ... P10-Parameter zu entschlüsseln, die mit einem verknüpft sind clr20r3
, der in das Ereignisprotokoll geschrieben wird, wenn in meiner Anwendung eine Ausnahme auftritt.
Das Beste, was ich finden konnte, ist:
- P1 : der Hosting-Prozess ( zB
w3wp.exe
) - P2 : die Hosting - Prozessversion ( zB
6.0.3790.1830
) - P3 : ??? ( zB
42435be1
) - P4 : die Anordnung aus dem die Ausnahme ausgelöst wurde ( z
mrtables.webservice
) - P5 : die Baugruppenversion ( zB
2.1.2.0
) - P6 : ??? ( zB
4682617f
) - P7 : ??? ( zB
129
) - P8 : ??? ( zB
50
) - P9 : der Ausnahmetyp angehoben ( z
system.argumentexception
) - P10 : ??? ( zB
NIL
)
Das Googeln nach clr20r3 bietet Tausende von Beispielparameterwerten, aus denen jemand versuchen kann, ein Muster abzuleiten.
Ich hoffe jedoch auf eine Dokumentation der Parameterbedeutungen im Gegensatz zu fundierten Vermutungen.
Bearbeiten: Obwohl ich auf eine kanonische Dokumentation hoffen kann, würde ich mich wirklich freuen, wenn die Ausnahme in welcher Zeile mit einem Stack-Trace ausgelöst wird.
Bonuslesung
- Nicht behandelte Ausnahme, die dazu führte, dass die Anwendung mit "EventType clr20r3, P1 w3wp.exe" im Protokoll abstürzte, aber dort keine Details (um Hilfe bei einem Problem bitten, während wir um eine kanonische Erklärung der Bedeutung der Parameter bitten)
Antworten:
Hier finden Sie Informationen zu Watson Buckets
Und auch hier ist ein MSDN- Artikel darüber.
Stichprobe:
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
quelle
P7 und P8 sind wichtig, um herauszufinden, wo die P9-Ausnahme ausgelöst wurde. Verwenden Sie P4, um zu wissen, nach welcher Baugruppe gesucht werden muss. Führen Sie ildasm.exe aus und öffnen Sie diese Assembly. Datei + Speicherauszug, aktivieren Sie das Kontrollkästchen "Token-Werte", OK, und speichern Sie die .il-Datei irgendwo.
Öffnen Sie die Datei in einem Texteditor. P7 gibt Ihnen das Methoden-Token, es beginnt mit 0x06 und erzeugt den Token-Wert "06000129". Suchen nach:
.method /*06000129*/
Wenn Sie den Methodennamen erhalten, suchen Sie von dort aus nach der .class, die Ihnen den Klassennamen gibt.
P8 gibt Ihnen den IL-Offset. Suchen Sie in der gefundenen .method nach IL_0050 für die Anweisung, die die Ausnahme ausgelöst hat. Es ist etwas schwierig, es wieder Ihrem Quellcode zuzuordnen, aber Sie werden es wahrscheinlich herausfinden. Verwenden Sie gegebenenfalls einen Reflektor.
Schreiben Sie im Allgemeinen einen Ereignishandler
AppDomain.UnhandledException
, um die Schmerzen beim Reverse Engineering dieser Watson-Crash-Buckets zu vermeiden. Protokollieren Sie den Wert vone.ExceptionObject.ToString()
, um sowohl die Ausnahmemeldung als auch eine Stapelverfolgung abzurufen.quelle
CLR20R3
mit einer Reihe dieserP
Werte wird direkt um die Absturzzeit protokolliert. Es mag chaotisch sein, aber es wird mich wahrscheinlich zu einer Lösung führen, aber am Ende muss ich diesen Code ändern und eine echte Protokollierung durchführen.