2010-06-22 4 views
3

Есть ли способ найти, какое исключение было уловлено кодом .NET извне приложения?Как понюхать пойманное исключение в .NET на производственной машине?

Я обнаружил, что API-интерфейс сторонних разработчиков генерирует исключение и подавляет его (я вижу, что счетчик perf растет).

Но это не показывает его в следе (я пробовал sysinternals dbgView).

Какой инструмент может отображать исключение?

+0

FYI ... Некоторые обычные методы (такие как Response.End) исключают исключения, поэтому увеличение количества исключений в perfmon не всегда плохо. – David

+0

Я не понимаю вашу точку зрения. Я согласен, что это неплохо. Мне просто нужно знать, что это такое, и засунуть его в API-интерфейсы API, потому что они не помогают. И это исключение составляет все приложение, которое я потратил на 5 недель моей жизни бесполезно ..... erm .. объяснил? –

ответ

2

Инструмент, в который я всегда обращаюсь, в этой ситуации - WinDBG. Загрузите 32bit version или 64bit version, в зависимости от битности процесса.

По какой-то хромой причине последняя версия не имеет прямой ссылки для скачивания (доступна только в SDK), поэтому перейдите к разделу «Предыдущая версия» и возьмите последнюю из них.

нагрузки WinDBG после установки и сделайте следующее:

  1. Файл -> Присоединить к процессу (F6)
  2. Выберите нужный процесс и нажмите кнопку «Открыть»
  3. В консоли введите следующую команду :
    • .loadby sos mscorwks (это загружает расширения .NET отладчик)
    • sxe clr (говорит отладчик б рубить на управляемых исключений)
    • g (GO!)
  4. Запустить процесс, пока не произойдет исключение.
  5. Отладчик сломается, и в этот момент введите !pe, чтобы просмотреть сведения об исключении.

Команда !clrstack полезна для просмотра управляемого стека или попробуйте !dumpstack для включения собственных вызовов.

Если отладчик останавливается на исключении, которое вам неинтересно, просто нажмите «g» еще раз, пока не получите тот, который хотите увидеть.

Команда !help покажет все расширения .NET и, если вы хотите глубже копать, я настоятельно рекомендую Tess Ferrandez's blog.

1

Можете ли вы подключиться к процессу с удаленным отладчиком в визуальной студии и настроить его на разрыв при возникновении исключения?

+0

Я не уверен, что он сломается. Это код выпуска, и исключение выбрано где-то в 3d-интерфейсе API. –

Смежные вопросы