Интересно, есть ли способ отладки dll c ++, вызываемого из C # PInvoke в VS 2010. Я пытался присоединить проект к приложению c #, но это не сработало — не остановился на точке останова.
Я также пытался записать что-нибудь с OutputDebugString в проекте C ++, но ничего не печаталось с вызовом PInvoke. Несмотря на эти проблемы, фактическая функция работает хорошо.
Любой совет будет оценен.
Для обоих необходимо включить один и тот же параметр: «Проект»> «Свойства»> вкладка «Отладка»> установить флажок «Включить отладку неуправляемого кода».
Теперь вы можете установить точку останова в собственном коде DLL, он будет превращаться из пустого в сплошной, как только проект C # загрузит DLL. Выходные данные OutputDebugString () перейдут в окно «Вывод» благодаря использованию неуправляемого механизма отладки.
Если вы запустили отладчик C ++ во время работы вашей программы, а затем перейдите в Debug-> Attach To Process-> Find your process и присоединитесь к нему. Вы должны быть в состоянии отладить его.
Убедитесь, что вы скомпилировали свою DLL с символами отладчика. (.pdb) и что они находятся в каталоге, из которого вы запускаете вещи.
При подключении измените значение «Присоединить к» на «Собственное». Процесс не должен выполняться под отладчиком управляемого кода — вместо «Отладка» используйте команду «Выполнить» для запуска.
Кроме того, DLL должна быть скомпилирована с отладочной информацией для любой разумной отладки. Убедитесь, что вы не используете P / Invoking Release.
Однако OutputDebugString () должен работать независимо от режима отладки.