Почему я не достигаю некоторых точек останова в моей управляемой 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 из правильного места? Вы можете проверить это через представление Модули.