Próbuję rozszyfrować znaczenie parametrów P1 ... P10 związanych z, clr20r3
który jest zapisywany w dzienniku zdarzeń, gdy moja aplikacja napotka wyjątek.
Najlepsze, jakie udało mi się znaleźć, to:
- P1 : proces hostingu ( np.
w3wp.exe
) - P2 : wersja procesu hostingu ( np.
6.0.3790.1830
) - P3 : ??? ( np.
42435be1
) - P4 : zestaw, z którego został wywołany wyjątek ( np.
mrtables.webservice
) - P5 : wersja montażowa ( np.
2.1.2.0
) - P6 : ??? ( np.
4682617f
) - P7 : ??? ( np.
129
) - P8 : ??? ( np.
50
) - P9 : zgłoszony typ wyjątku ( np.
system.argumentexception
) - P10 : ??? ( np.
NIL
)
Wyszukiwanie w Google clr20r3 dostarcza tysięcy przykładowych wartości parametrów, z których ktoś może spróbować wyprowadzić wzorzec.
Ale mam nadzieję, że uda mi się udokumentować znaczenie parametrów, w przeciwieństwie do wyuczonych domysłów.
Edycja: Chociaż mogę mieć nadzieję na dokumentację kanoniczną, naprawdę byłbym szczęśliwy, widząc wyjątek, w którym wierszu, wraz ze śladem stosu.
Czytanie bonusowe
- Nieobsługiwany wyjątek, który spowodował awarię aplikacji z „EventType clr20r3, P1 w3wp.exe” w dzienniku, ale nie ma tam żadnych szczegółów (prosimy o pomoc w rozwiązaniu problemu, podczas gdy prosimy o kanoniczne wyjaśnienie znaczenia parametrów)
Odpowiedzi:
Oto informacje na temat Watson Buckets
A także tutaj jest artykuł MSDN na ten sam temat.
Próba:
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
źródło
P7 i P8 to te ważne, aby dowiedzieć się, gdzie został zgłoszony wyjątek P9. Użyj P4, aby dowiedzieć się, jakiego zespołu szukać. Uruchom ildasm.exe i otwórz ten zestaw. Plik + zrzut, zaznacz pole wyboru „Wartości tokena”, OK i zapisz gdzieś plik .il.
Otwórz plik w edytorze tekstu. P7 podaje token metody, zaczyna się od 0x06, tworząc wartość tokena „06000129”. Szukaj:
.method /*06000129*/
Co daje ci nazwę metody, poszukaj stamtąd, aby znaleźć .class, który zawiera nazwę klasy.
P8 podaje przesunięcie IL. W znalezionej metodzie poszukaj instrukcji IL_0050, która wywołała wyjątek. Mapowanie go z powrotem do kodu źródłowego jest trochę trudne, ale prawdopodobnie to zrozumiesz. W razie potrzeby użyj reflektora.
Ogólnie rzecz biorąc, napisz procedurę obsługi zdarzeń,
AppDomain.UnhandledException
aby uniknąć bólu związanego z inżynierią wsteczną tych zasobników awaryjnych Watson. Zarejestruj wartość,e.ExceptionObject.ToString()
aby uzyskać zarówno komunikat o wyjątku, jak i ślad stosu.źródło
CLR20R3
kilka tychP
wartości. Może to być bałagan, ale prawdopodobnie doprowadzi mnie do rozwiązania, ale w końcu będę musiał zmodyfikować ten kod i uzyskać prawdziwe logowanie.