Подтвердить что ты не робот

Не удается отладить неуправляемую Dll от С#

У меня есть DLL, которая была написана в C++ и вызвана из приложения C#. DLL - неуправляемый код.

Если я скопирую файлы DLL и его .pdb с событием пост-сборки в C# выполнение отладки приложения dir, я все равно не могу ударить по каким-либо точкам останова, которые я ввел в код DLL. В точке останова есть прикрепленное к нему сообщение, в котором говорится, что "для этого документа не было загружено никаких символов".

Что еще мне нужно сделать, чтобы получить отладку в источнике DLL?

У меня есть ToolsOptionsDebuggingGeneralEnable только мой код "Отключен. DLL скомпилируется с помощью "Отслеживание времени выполнения и отключения оптимизации (/ASSEMBLYDEBUG)" и "Генерация отладочной информации" в "Да (/DEBUG)"

4b9b3361

Ответ 1

Чтобы отлаживать вашу С++ DLL, вам нужно включить отладку смешанного режима в приложении для запуска в вашем решении.

  • Щелкните правой кнопкой мыши по проекту → Свойства
  • Перейдите на вкладку "Отладка"
  • Отметьте "Включить неуправляемую отладку кода"

Это позволит вам отлаживать собственный код для сценария стиля F5. Если вы хотите включить его для присоединения к процессу, выполните следующие действия в диалоговом окне "Прикрепить к процессу"

  • Выберите процесс для отладки
  • Нажмите кнопку "Выбрать..." над списком процессов
  • Нажмите "Отладить эти типы кода"
  • Проверьте как управляемые, так и родные

Ответ 2

Вам нужно включить неуправляемую (Native) отладку.

Если вы подключаетесь к процессу после его запуска:

Перейдите в меню "Сервис", а затем присоединитесь к процессу, убедитесь, что включена встроенная отладка.

Вы увидите окно редактирования только для чтения:

Присоединить к: Управляемый код, собственный код [Выбрать]

Убедитесь, что там указан первичный код. Если не добавить его.

Если вы запускаете свой проект из визуальной студии:

В свойствах проекта, которые вы запускаете в режиме отладки. Перейдите к свойствам проекта и выберите вкладку отладки.

Убедитесь, что установлен этот флажок:

Включение неуправляемой отладки кода

Ответ 3

При подключении к процессу для отладки вы должны указать, как вы хотите подключиться. У вас есть несколько вариантов: Managed и Native. Чтобы отлаживать код С# с неуправляемым С++, вы должны присоединяться к процессу как управляемому и как Native (оба могут быть выбраны одновременно).

Ответ 4

Я столкнулся с той же проблемой и сделал все, что было предложено в принятом ответе, но точки останова в неуправляемой dll не пострадали!

Однако, когда я сделал следующее, я смог наконец отладить dll!

Выберите решение в обозревателе решений
Выберите из меню | Инструменты | параметры | Отладка | Общие
Снимите флажок "Требовать, чтобы исходные файлы соответствовали оригинальной версии"