【问题标题】:Visual studio 2012 mixed mode debuggingVisual Studio 2012 混合模式调试
【发布时间】: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


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2012-10-18
  • 2013-09-08
  • 2013-06-17
  • 1970-01-01
相关资源
最近更新 更多