Расшифровка параметров исключений .NET clr20r3 P1..P10 - PullRequest
75 голосов
/ 29 октября 2010

Я пытаюсь расшифровать значение параметров P1 ... P10, связанных с 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 предоставляет тысячи примеров значений параметров, из которых кто-то может попытаться получить шаблон.

Но я надеюсь на документацию по значениям параметров, в отличие от образованных догадок.


Редактировать: Хотя я могу надеяться на каноническую документацию, на самом деле я был бы рад видеть исключение, на какой строке завершается трассировка стека.

Бонус Чтение

Ответы [ 2 ]

107 голосов
/ 29 октября 2010

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(), чтобы получить сообщение об исключении и трассировку стека.

75 голосов
/ 29 октября 2010

Вот информация о Watson Buckets

  1. Exe Имя файла
  2. Номер версии сборки файла Exe
  3. Exe File Stamp
  4. Полное имя сборки exe-файла
  5. Версия с ошибочной сборкой
  6. Временная метка сбоя сборки
  7. Неисправный метод сборки def
  8. Метод сбоя IL Смещение в методе сбоя
  9. Тип исключения

А также вот статья 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...