【发布时间】:2014-10-12 10:28:36
【问题描述】:
我有一个使用 VS 2012 中的混合代码构建的 dll。这个 dll 是从原生 C++ 中构建的 .exe 加载的。
当我调试 dll(通过 VS 2012 中的 F5)时,没有命中断点。消息是:
No executable code is associated with this line. Possible causes include: preprocessor directives or compiler/linker option
但是,当我从 Windows 资源管理器运行 exe 然后执行“附加到进程”时,所有断点都会被命中。
我尝试将调试器类型更改为“Mixed”、“Native”、“Managed”,我也尝试了调试选项,但结果都一样;除非调试器类型为“托管”,否则断点似乎已加载(出现实心红色圆圈而不是空红色圆圈)但未命中。
你能给我解释一下这个奇怪的现象吗?
【问题讨论】:
-
从 IDE 中的调试器启动时是否找到并加载了所有 pdb?诸如“未加载 dll 的符号”之类的东西?
-
从错误消息和使用“附加到进程”时调试工作的事实,我推断pdb已加载。
-
调试混合代码是否需要一些特殊设置?
-
我尝试将调试器类型更改为“Mixed”、“Native”、“Managed” 您的意思是您在 Tools->Options->Debugging- 中选择了所有这三个>及时?调试时,如果您进入“模块”窗口,是否显示符号已加载?如果没有,您可以手动加载它们吗(右键单击->加载我认为的符号)?
-
我的dll的符号被加载了。
标签: c++ debugging visual-studio-2012 mixed-mode