У меня есть dll, построенный из смешанного кода в VS 2012. Эта DLL загружается из.exe, встроенного в native C++.
Когда я отлаживаю dll (через F5 от VS 2012), точки останова не попадают. Это сообщение:
No executable code is associated with this line. Possible causes include: preprocessor directives or compiler/linker option
Однако, когда я запускаю exe из Windows explorer, затем выполняю "attach to process", все точки останова попадают.
Я попытался изменить тип отладчика на "Смешанный", "Родной", "Управляемый", я также играл с вариантами отладки, но результаты были одинаковыми; за исключением случаев, когда тип отладки "управляется", точки останова, похоже, загружаются (вместо пустого красного круга появляется заполненный красный круг), но не попадают.
Не могли бы вы объяснить мне это странное явление?
При запуске секции отладки с ложным пути отладки (это может быть установлено в свойствах проекта) может случиться, что pdb не будет загружен, потому что рабочий каталог не находится в исполняемом файле с pdb. Таким образом, информация об исходном местоположении отсутствует, и отладчик может ответить: с этой строкой не связан исполняемый код. При запуске приложения непосредственно рабочий каталог обычно является местом, где находится приложение, загружается точка доступа pdb. Когда отладка приложения проверяет, загружен ли соответствующий pdb, просто чтобы убедиться, что все здесь.