VSCode中触发断点时GDB导致程序崩溃的问题求助
环境信息
- 系统:Ubuntu 22.04.1 LTS
- VSCode版本:
1.71.0 784b0177c56c607789f9638da7b6bf3230d47a8c x64 - 编译工具:GCC
11.2.0,Clang14.0.0/16.0.0 - GDB版本:
12.0.90 - VSCode插件:C/C++
v1.12.4、CMake Toolsv1.12.26
问题详情
通过VSCode默认绑定F5的CMake: Debug命令启动调试时,目标程序触发断点即崩溃,报错信息如下:
Aborted (core dumped) [1] + Aborted (core dumped) "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-ifoflcfq.xvl" 1>"/tmp/Microsoft-MIEngine-Out-h4yklwfm.ghy"
命令行直接调用GDB调试无此问题,小型测试程序在VSCode中调试正常。调试启动时终端会短暂显示以下警告,随后被清除:
warning: GDB: Failed to set controlling terminal: Operation not permitted
可行解决方向
切换调试终端类型
在.vscode/launch.json中添加或修改externalConsole字段为true,让调试使用外部终端而非VSCode内置终端:{ "version": "0.2.0", "configurations": [ { "name": "CMake Debug", "type": "cppdbg", "request": "launch", "program": "${command:cmake.launchTargetPath}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }修复GDB终端权限
给GDB添加CAP_SYS_PTRACE权限,解决终端控制权限不足的警告:sudo setcap cap_sys_ptrace=eip /usr/bin/gdb执行后重启VSCode再尝试调试。
更新相关组件
将C/C++插件、CMake Tools插件更新至最新版本,同时检查VSCode本身是否有可用更新,新版本可能修复了集成调试的兼容性问题。调整CMake Tools终端设置
在VSCode设置中,将CMake: Debug Terminal设置为external,强制使用外部终端启动调试会话,规避内置终端的权限限制。
内容的提问来源于stack exchange,提问作者bobeff
相关产品推荐
相关产品推荐

