Visual Studio 2012混合模式调试

时间:2014-08-19 10:45:53

标签: c++ debugging visual-studio-2012 mixed-mode

我在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然后执行“attach to process”时,所有断点都被命中。

我尝试将调试器类型更改为“混合”,“本机”,“管理”,我也使用调试选项,但结果都是一样的;除非调试器类型为“托管”,否则似乎会加载断点(显示填充的红色圆圈而不是空的红色圆圈),但不会被点击。

你能告诉我这个奇怪现象的解释吗?

1 个答案:

答案 0 :(得分:1)

当启动带有错误调试路径的调试部分(这可以在项目属性中设置)时,可能会发生pdb将不会被加载,因为工作目录不在pdb的可执行文件中。因此,没有关于源位置的信息,调试器可以回答:没有可执行代码与此行相关联。 直接启动应用程序时,工作目录通常是应用程序所在的位置,pdb get的加载断点得到命中。 调试应用程序时,检查相应的pdb是否已加载,只是为了确保一切都在这里。