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"。现在已加载符号并命中断点。
如果有人能详细说明为什么这会导致加载符号,而前一个选项不会加载,那就太好了。
我看到这个问题被问过好几次了,我把我读过的所有废话都试过了,但我还是不行。
我在调试模式下使用 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"。现在已加载符号并命中断点。
如果有人能详细说明为什么这会导致加载符号,而前一个选项不会加载,那就太好了。