Visual Studio 2012 年未命中断点

Breakpoints not being hit in Visual Studio 2012

我看到这个问题被问过好几次了,我把我读过的所有废话都试过了,但我还是不行。

我在调试模式下使用 Visual Studio 2012。我编译简单的代码

#include<iostream>
int main()
{
 std::cout << "Hi" << std::endl;
 system("pause");
 return 0;
}

我在第 4 行 (std::cout...) 下了一个断点,然后按 F5 执行。

断点被忽略,旁边有一个感叹号表示 "The breakpoint will not currently be hit. No symbols have been loaded for this document".

编辑:在构建后的输出window中,我收到警告:

main.obj:警告 LNK4099:在 'main.obj' 或 'Z:\Projects\Tools\DebugTest\Debug\vc110.pdb' 处找不到 PDB 'vc110.pdb';链接对象就好像没有调试信息 DebugTest.vcxproj -> Z:\Projects\Tools\DebugTest\Debug\DebugTest.exe

但是,如果我转到属性 > 配置属性 > 链接器 > 调试,在 "Generate Program Database file" 我相信我有正确的“$(OutDir)$(TargetName).pdb”,所以我不明白为什么没有创建 pdb 文件。

  • 尝试重建应用程序。

  • 确保它在调试配置中。

当调试信息文件 (.PDB) 与实际编译的二进制文件不同步时,可能会发生这种情况。

以下是我设置断点的方法,以防对任何人有帮助,尽管我不太明白我在做什么。

在项目属性 > C/C++ > 常规中,在调试信息格式设置中,我将 "program database" 更改为 "C7 compatible"。现在已加载符号并命中断点。

如果有人能详细说明为什么这会导致加载符号,而前一个选项不会加载,那就太好了。