Отладка C # dll из решения C ++ через COM

У меня есть решение C ++. Проект запуска является exe. В решении есть ряд C # dll (предназначенных для .NET Framework 2.0), которые зарегистрированы для взаимодействия COM. Когда я ставлю точку останова в коде C #, я получаю пустую красную точку останова с "No native symbols in symbol file"

Я пробовал настройку Project Property Pages -> Debugging -> Debugger Type Смешать на стартовом проекте, который вызывает методы COM.

я проверил Debug -> Windows -> Modules, Он загрузил мои DLL, и статус символа "No native symbols in symbol file",

Это не конец света, потому что если я сделаю Debug -> Start Without Debugging а потом Debug -> Attach to Process, меняя Attach To: в Managed (v2.0, v1.1, v1.0) code, Native code, Затем я нажимаю точки останова как в коде C ++, так и в коде C #.

Таким образом, у меня есть обходной путь, но я считаю, что смогу ли я сделать это, подключившись к процессу — я смогу сделать это, просто отладив.

Как я могу поразить мои контрольные точки C #, просто делая Debug -> Start Debugging?

7

Решение

Я смог отладить мою C # dll из проекта C ++ в VS2008, выполнив следующие действия:

В свойствах проекта C ++ перейдите в Свойства конфигурации -> Отладка. Установите «Тип отладчика» на «Смешанный». «Присоединить» должно быть установлено на №

В свойствах проекта C # на вкладке «Отладка» установите «Запуск внешней программы» для исполняемого файла проекта C ++.

4

Другие решения

Я знаю, что он немного староват, но я нашел практическое решение этой проблемы.

У меня была такая же проблема при использовании приложения C ++, которое использует COM-объект C #. Я попробовал несколько настроек в Visual Studio на стороне C ++ и C #. Ничего не помогает, пока я не попробую вручную запустить отладчик.

Ты можешь использовать

Debugger.Launch();

вручную запустить отладчик на вашей C # DLL. Я знаю, что это не лучший, но практический способ. В более поздних продуктивных средах вы должны удалить функцию запуска отладчика :).

С уважением

2

Я не уверен, поможет ли это, но мы много работаем с C # и C ++. Я обнаружил, что это возможно, поместив проект C ++ и проект C # в одно решение и включив «собственную отладку» в проекте C #. Затем я смог прыгать туда-сюда между ними во время отладки.

1
По вопросам рекламы [email protected]