Инструмент, в который я всегда обращаюсь, в этой ситуации - WinDBG. Загрузите 32bit version или 64bit version, в зависимости от битности процесса.
По какой-то хромой причине последняя версия не имеет прямой ссылки для скачивания (доступна только в SDK), поэтому перейдите к разделу «Предыдущая версия» и возьмите последнюю из них.
нагрузки WinDBG после установки и сделайте следующее:
- Файл -> Присоединить к процессу (F6)
- Выберите нужный процесс и нажмите кнопку «Открыть»
- В консоли введите следующую команду :
.loadby sos mscorwks
(это загружает расширения .NET отладчик)
sxe clr
(говорит отладчик б рубить на управляемых исключений)
g
(GO!)
- Запустить процесс, пока не произойдет исключение.
- Отладчик сломается, и в этот момент введите
!pe
, чтобы просмотреть сведения об исключении.
Команда !clrstack
полезна для просмотра управляемого стека или попробуйте !dumpstack
для включения собственных вызовов.
Если отладчик останавливается на исключении, которое вам неинтересно, просто нажмите «g» еще раз, пока не получите тот, который хотите увидеть.
Команда !help
покажет все расширения .NET и, если вы хотите глубже копать, я настоятельно рекомендую Tess Ferrandez's blog.
FYI ... Некоторые обычные методы (такие как Response.End) исключают исключения, поэтому увеличение количества исключений в perfmon не всегда плохо. – David
Я не понимаю вашу точку зрения. Я согласен, что это неплохо. Мне просто нужно знать, что это такое, и засунуть его в API-интерфейсы API, потому что они не помогают. И это исключение составляет все приложение, которое я потратил на 5 недель моей жизни бесполезно ..... erm .. объяснил? –