Инструмент, к которому я всегда обращаюсь в этой ситуации, - это WinDBG. Загрузите 32-битную версию или 64-битную версию , в зависимости от разрядности процесса.
По какой-то неубедительной причине последняя версия не имеет прямой ссылки на скачивание (доступна только в SDK), поэтому перейдите к разделу «Предыдущая версия» и возьмите последнюю из них.
Загрузите WinDBG после установки и сделайте следующее:
- Файл -> Присоединить к процессу (F6)
- Выберите целевой процесс и нажмите «Открыть»
- В консоли введите следующее:
.loadby sos mscorwks
(загружаются расширения отладчика .NET)
sxe clr
(сообщает отладчику прерывать управляемые исключения)
g
(GO!)
- Запускайте процесс до возникновения исключения.
- Отладчик сломается, после чего введите
!pe
, чтобы увидеть подробности исключения.
Команда !clrstack
полезна для просмотра управляемого стека или попытки !dumpstack
включить собственные вызовы.
Если отладчик останавливается на исключении, которое вас не волнует, просто нажимайте «g» снова, пока не получите то, которое хотите увидеть.
Команда !help
покажет все доступные расширения .NET, и, если вы хотите копать глубже, я настоятельно рекомендую блог Тесс Феррандез .