Почему я не достигаю некоторых точек останова в моей управляемой C++ DLL (даже если во время отладки они горят красным)?

Я сделал DLL, которая содержит управляемый класс C++, который включает в себя некоторые функции библиотеки C. У меня есть тестовый проект C#, который ссылается на управляемую C++ DLL. Неуправляемая отладка включена в проекте C#, и я установил Debugger Type=Mixed в проекте C++ DLL. Вот своего рода диаграмма того, что я получил:

Консольное приложение C# -> DLL-оболочка -> управляемый класс C++ -> Неуправляемые методы C++ (реализовано в DLL-оболочке) -> C static lib

У меня установлены точки останова как в классе управляемых оболочек, так и в неуправляемых методах в DLL. Когда я начинаю отладку, все мои точки останова остаются сплошными красными. Точки останова в классе управляемых оболочек достигаются, а в неуправляемых методах - нет. Странно, когда я пытаюсь войти в любой из неуправляемых методов, отладчик "пропускает" неуправляемые методы C++ и переходит непосредственно к функциям в статической библиотеке C. В этот момент в стеке вызовов отображается [Внешний код], где я ожидаю, что он покажет мой неуправляемый метод C++.

Есть идеи о том, что здесь может происходить?

3 ответа

В моем случае (VS2015_SP1) я должен использовать Debugger-Option:
Отладка-> Параметры-> Общие-> Использовать собственный режим совместимости

Попробуйте запустить EXE, затем перейдите в Debug | Прикрепить к процессу в VS.

Выберите EXE и убедитесь, что

"Managed" и "Native" выбираются в "Attach to:"

Это то, что я использовал раньше, и, кажется, работает нормально...

Вы уверены, что загружаете DLL из правильного места? Вы можете проверить это через представление Модули.

Другие вопросы по тегам