1. 现象介绍
当我们在使用 VS Code 编写代码时,很可能会遇到不能正常设置断点的情况。这种现象通常表现为:代码行前的圆点变成了空心圆,说明断点加不上。
2. 为什么会出现断点加不上的问题
导致 VS Code 不能设置断点的原因有很多,以下是可能出现的场景:
2.1. 没有启动调试模式
如果没有启动调试模式,通常是无法添加断点的。此时需要点击 VS Code 左侧的调试按钮,或按下 F5,让 VS Code 进入调试模式。
2.2. 代码没有编译
VS Code 不会自动编译我们的代码,如果我们的代码没有被编译成可执行文件,就无法添加调试断点。我们可以使用终端工具编译代码,或使用 VS Code 的内置功能进行编译。
2.3. 所选编译器不支持 debug
如果编译器没有支持debug,就无法在代码上设置断点。需要选择支持 debug 的编译器或者在编译选项中增加 -g 选项。
2.4. 目标可执行文件不存在
如果我们添加的断点位于一个不存在的可执行文件中,那么就会添加失败。此时需要先生成目标可执行文件,在该目标文件上设置断点。
3. 解决方法
3.1. 确认已经启动调试模式
在 VS Code 左侧,有一个调试按钮,点击后会弹出一个“启动调试”的选项,此时需要确认我们选择了正确的启动项,才能使断点正常工作。
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/test",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
上述是 C++ 调试的配置文件,程序路径需要根据自己的文件进行修改。
3.2. 确认代码已经编译
在 VS Code 左侧,有一个"终端 Terminal"按钮,在“终端”中执行编译命令可以生成可执行文件。
重要提示:如果使用 C++ 编写的程序,编译命令通常是:
g++ -g -o test test.cpp
其中,-g 表示生成可调试版本的代码。
3.3. 检查编译器设置
在 VS Code 的“启动”调试项中,有一个“miDebuggerPath”的配置项,此处需要填写 gdb 或 lldb 的路径。如果使用的是其他编译器,需要根据对应的调试器进行设置。需要修改 launch.json 文件中的配置。
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb"
3.4. 检查程序可执行文件是否存在
使用终端进入程序所在文件夹,执行如下命令:
ls
如上命令可列出当前目录下的所有文件,如果程序可执行文件不存在,需要先进行编译。如果存在,则直接在 VS Code 中打开该文件,即可添加断点。
4. 总结
本文介绍了如何解决 VS Code 中断点加不上的问题。在使用 VS Code 进行编程时,需要充分了解调试模式、编译器设置和编译相关的知识。只要以上三者完成,再仔细检查添加断点的位置和代码逻辑,就能够成功设置断点。