Я пытаюсь расшифровать значение параметров P1 ... P10, связанных с a, clr20r3
который записывается в журнал событий, когда в моем приложении возникает исключение.
Лучшее, что мне удалось найти, это:
- 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
)
Поиск в Google для clr20r3 предоставляет тысячи примеров значений параметров, из которых кто-то может попытаться получить шаблон.
Но я надеюсь на документацию по значениям параметров, а не на обоснованные предположения.
Изменить: хотя я могу надеяться на каноническую документацию, на самом деле я был бы счастлив увидеть исключение, в какой строке, с трассировкой стека.
Бонусное чтение
- Необработанное исключение, которое привело к сбою приложения с "EventType clr20r3, P1 w3wp.exe" в журнале, но без подробностей (просьба помочь с проблемой, в то время как мы просим каноническое объяснение значения параметров)
Ответы:
Вот информация о ведрах Watson
А также вот статья 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
источник
P7 и P8 являются важными, чтобы выяснить, где возникло исключение P9. Используйте P4, чтобы узнать, какую сборку искать. Запустите ildasm.exe и откройте эту сборку. Файл + Дамп, поставьте галочку напротив «Значения токенов», ОК и сохраните куда-нибудь файл .il.
Откройте файл в текстовом редакторе. P7 дает вам токен метода, он начинается с 0x06, производя значение токена «06000129». Искать:
.method /*06000129*/
Это дает вам имя метода, посмотрите оттуда, чтобы найти .class, который дает вам имя класса.
P8 дает вам смещение IL. В найденном .method найдите IL_0050 для инструкции, вызвавшей исключение. Сопоставить это с вашим исходным кодом немного сложно, но вы, вероятно, разберетесь в этом. При необходимости используйте Reflector.
В общем, напишите обработчик событий,
AppDomain.UnhandledException
чтобы избежать боли, связанной с реверс-инжинирингом этих корзин сбоя Watson. Зарегистрируйте значение,e.ExceptionObject.ToString()
чтобы получить как сообщение об исключении, так и трассировку стека.источник
CLR20R3
с кучей этихP
значений регистрируется как раз во время сбоя. Это может быть беспорядочно, но это, вероятно, приведет меня к решению, но, в конце концов, мне придется изменить этот код и получить реальное ведение журнала.