我已经多次看过这个问题而且我已经尝试了所有我读过的废话,但是我无法让它发挥作用。
我在调试模式下使用Visual Studio 2012。我编译简单的代码
#include<iostream>
int main()
{
std::cout << "Hi" << std::endl;
system("pause");
return 0;
}
我在第4行(std :: cout ...)中设置了一个断点,然后按F5执行。
断点被忽略,旁边有一个惊叹号,说&#34;断点当前不会被击中。没有为此文档加载符号&#34;。
编辑:在构建后的输出窗口中,我收到警告:
main.obj:警告LNK4099:PDB&#39; vc110.pdb&#39;没有找到&#39; main.obj&#39;或者在&#39; Z:\ Projects \ Tools \ DebugTest \ Debug \ vc110.pdb&#39 ;;链接对象,好像没有调试信息DebugTest.vcxproj - &gt; Z:\项目\工具\的DebugTest \调试\ DebugTest.exe
但是,如果我去Properties&gt;配置属性&gt;链接器&gt;调试,生成程序数据库文件&#34;我相信我有正确的&#34; $(OutDir)$(TargetName).pdb&#34;所以我不明白为什么没有创建pdb文件。
答案 0 :(得分:1)
尝试重建应用程序。
确保它处于调试配置中。
当调试信息文件(.PDB)与实际编译的二进制文件不同步时,就会发生这种情况。
答案 1 :(得分:0)
以下是我如何使断点有效,以防这对任何人都有帮助,虽然我不太了解我在做什么。
在项目属性中&gt; C / C ++&gt;一般情况下,在调试信息格式设置中,我更改了程序数据库&#34; to&#34; C7兼容&#34;。现在加载符号并且命中断点。
如果有人可以详细说明为什么这会导致符号加载,那将是很好的,而前一种选择则没有。