VSCode调试器无故停在无断点处,如何排查清理隐形断点?
解决VSCode附加调试C++时的隐形断点问题
1. 清理VSCode的断点缓存与配置
- 打开工作区的
.vscode文件夹,检查launch.json,如果里面有breakpoints字段,直接删除该字段下的所有内容。 - 关闭VSCode,找到对应工作区的缓存目录:
- Windows:进入
%APPDATA%\Code\User\workspaceStorage,找到当前工作区对应的文件夹,删除其中的breakpoints.json - macOS:进入
~/Library/Application Support/Code/User/workspaceStorage,同样删除对应工作区的breakpoints.json - Linux:进入
~/.config/Code/User/workspaceStorage,删除对应文件
- Windows:进入
- 重启VSCode,重新加载工作区。
2. 通过调试控制台直接管理调试器断点
因为你用的是Python C++ Debugger扩展,底层是GDB或LLDB,直接在调试控制台输入命令:
- 当调试器停在隐形断点时,输入
info breakpoints(GDB)或breakpoint list(LLDB),会列出所有存在的断点,包括编辑器里看不到的隐形断点,每个断点会有编号和位置信息。 - 找到要删除的断点编号,输入
delete <编号>(GDB)或breakpoint delete <编号>(LLDB)单独删除;要是想清空所有断点,直接输入delete(GDB)或breakpoint delete(LLDB)即可。
3. 重置调试配置与排查扩展干扰
- 备份当前
.vscode/launch.json的内容,然后删除该文件,重新生成一个干净的附加调试配置。 - 禁用VSCode里除Python C++ Debugger外的其他扩展,重启后再调试,排查是否是其他扩展导致的断点异常。
4. 确认停止原因是否为断点
有时候调试器停下可能是因为程序触发了信号(比如段错误),而非断点:
- 当调试器停下时,查看调试控制台的停止原因提示,若显示是信号触发,可在
launch.json的附加配置里添加"handleSIGSEGV": false(针对段错误信号)之类的配置,忽略不必要的信号中断。
内容的提问来源于stack exchange,提问作者moriaz
相关产品推荐
相关产品推荐

