Как я могу отладить необработанное исключение в управляемом коде при вызове из COM? - PullRequest
8 голосов
/ 23 мая 2011

У меня есть компонент C # .NET, который вызывается из exX ActiveX COM вне процесса.

Я могу запустить отладчик в Visual Studio 2005, работающий на моем COM exe, который вызывает мой .NETсоставная часть.Точки останова работают, но прерывание необработанного исключения «Набор ссылок на объект» не работает.Я пробовал следующее безрезультатно:

  • проверил все исключения CLR в диалоге исключений VS
  • включен «Разрыв, когда исключения пересекают границы AppDomain или управляемые / собственные»
  • включил отладку неуправляемого кода на моем проекте
  • отключил отладку "Просто мой код"

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Обычно я добавляю вызов к System.Diagnostics.Debugger.Launch; в точке входа моего управляемого кода. Это запустит отладчик, если программа еще не находится в активном режиме отладки. Имейте в виду, что вам нужно будет удалить эту строку после завершения отладки, поскольку вы не захотите держать вызов для запуска отладчика в версии выпуска.

1 голос
/ 23 мая 2011

Вместо запуска вашего программирования с помощью F5, вы можете запустить неуправляемую программу и затем присоединиться к ней:

Для Visual Studio 2005:

  • Выполнить (не отлаживать)неуправляемый проект из Visual Studio с Ctrl+F5
  • Откройте диалоговое окно «Присоединить к процессу»: Отладка -> Присоединить к процессу ...
  • Нажмите Прикрепить к: кнопке выбора: Выбрать ...
  • Выбрать: Отладить следующие типы кода:
  • Проверьте следующие элементы: Управляемый , Собственный
  • Нажмите OK
  • Выберите свой процесс из Доступные процессы
  • Нажмите Вложить

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...