У меня есть решение 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
?
Я смог отладить мою C # dll из проекта C ++ в VS2008, выполнив следующие действия:
В свойствах проекта C ++ перейдите в Свойства конфигурации -> Отладка. Установите «Тип отладчика» на «Смешанный». «Присоединить» должно быть установлено на №
В свойствах проекта C # на вкладке «Отладка» установите «Запуск внешней программы» для исполняемого файла проекта C ++.
Я знаю, что он немного староват, но я нашел практическое решение этой проблемы.
У меня была такая же проблема при использовании приложения C ++, которое использует COM-объект C #. Я попробовал несколько настроек в Visual Studio на стороне C ++ и C #. Ничего не помогает, пока я не попробую вручную запустить отладчик.
Ты можешь использовать
Debugger.Launch();
вручную запустить отладчик на вашей C # DLL. Я знаю, что это не лучший, но практический способ. В более поздних продуктивных средах вы должны удалить функцию запуска отладчика :).
С уважением
Я не уверен, поможет ли это, но мы много работаем с C # и C ++. Я обнаружил, что это возможно, поместив проект C ++ и проект C # в одно решение и включив «собственную отладку» в проекте C #. Затем я смог прыгать туда-сюда между ними во время отладки.