- C/C++插件:
- .vscode
- c_cpp_properties.json
- launch.json
- settings.json
- tasks.json
- .vscode
- CMake插件
- CMakeLists.txt
# CMakeLists.txt
vscode_15">一、CMakeLists.txt 如何支持vscode在线调试?
- CMake支持调试; C/C++插件也支持调试;二者有区别;
- C/C++的launch.json task.json只能小规模的;大规模的依赖,还是需要CMake
- 那么CMake之后的工程,如何在线debug呢?
- CMakeLists.txt中添加:
set(CMAKE_BUILD_TYPE Debug) # 确保是 Debug 模式
set(CMAKE_CXX_FLAGS_DEBUG "-g") # 添加调试符号
-
C/C++插件 debug修改:
-
修改
.vscode/tasks.json
支持-g
要修改.vscode/tasks.json
以支持 debug,需要确保以下几点: -
生成可调试的可执行文件(已包含
-g
,符合要求)。 -
正确配置
launch.json
以启动调试。
修改 tasks.json
当前 tasks.json
已经包含 -g
选项,这是用于调试的信息,因此你只需要确保它编译 .cpp
文件并生成可执行文件。
如果你希望 支持多文件编译,可以改为:
{"tasks": [{"type": "cppbuild","label": "C/C++: g++ 编译(调试)","command": "/bin/g++","args": ["-fdiagnostics-color=always","-g","${workspaceFolder}/*.cpp", // 编译所有 CPP 文件"-o","${workspaceFolder}/app" // 生成 "app" 可执行文件],"options": {"cwd": "${workspaceFolder}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "用于调试的编译任务"}],"version": "2.0.0"
}
添加 launch.json
(启动 GDB 进行调试)
你还需要在 .vscode/launch.json
添加 GDB 调试支持:
{"version": "0.2.0","configurations": [{"name": "GDB 调试","type": "cppdbg","request": "launch","program": "${workspaceFolder}/app","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "启用 Pretty Printing","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++ 编译(调试)","miDebuggerPath": "/usr/bin/gdb"}]
}
使用方法
-
编译代码
- 在 VSCode 任务栏运行 “C/C++: g++ 编译(调试)” 任务
- 生成
app
可执行文件
-
启动调试
- 打开 Run(运行) -> Start Debugging(开始调试)
- 选择 “GDB 调试”,会自动调用 GDB 调试
app
额外优化
如果你的程序有多线程或使用 OpenCV,可以添加:
"launch.json":
{"environment": [{ "name": "LD_LIBRARY_PATH", "value": "/usr/local/lib" }]
}
这样可以避免 OpenCV 等动态库找不到。
总结
✅ tasks.json
确保编译支持 -g
,并指定 单文件/多文件编译
✅ launch.json
确保 GDB 运行 app
,并支持 Pretty Printing
✅ 运行 Ctrl+Shift+B
编译,然后 F5
调试 🚀
报错:“/usr/bin/gdb” --interpreter=mi --tty=${DbgTerm} 0<“/tmp/Microsoft-MIEngine-In-x3btbmiu.21b” 1>“/tmp/Microsoft-MIEngine-Out-ix3okr2v.yh4”
这个错误通常出现在 VSCode 使用 gdb
进行调试时,可能的原因如下:
可能原因及解决方案
1. VSCode 配置错误
检查 .vscode/launch.json
是否正确,尤其是 miDebuggerPath
和 MIMode
:
"miDebuggerPath": "/usr/bin/gdb",
"MIMode": "gdb"
确保 miDebuggerPath
指向 正确的 GDB 路径。如果 gdb
安装在其他目录,可以使用:
which gdb
然后在 launch.json
中修改 miDebuggerPath
。
2. GDB 没有安装
尝试在终端运行:
gdb --version
如果 gdb
没有安装,可以通过以下命令安装:
sudo apt update && sudo apt install gdb # Ubuntu/Debian
sudo yum install gdb # CentOS
sudo pacman -S gdb # Arch Linux
brew install gdb # macOS(Homebrew)
3. 终端权限问题
VSCode 调试器可能无法正确访问 GDB 终端,尝试:
sudo chmod +x /usr/bin/gdb
或者以 管理员权限 运行 VSCode:
sudo code .
4. 关闭 GDB 的 tty
相关设置
可以尝试在 launch.json
中添加:
"setupCommands": [{"text": "set new-console off","description": "禁用 GDB 新终端","ignoreFailures": true}
]
5. 直接在终端运行 GDB
如果 VSCode 仍然报错,尝试手动运行:
gdb build/app
看看是否能正常启动调试,如果手动运行没有问题,则 VSCode 配置可能有问题。
6. 可能的 VSCode 插件 Bug
如果 之前调试是正常的,但突然无法使用,可能是 VSCode 更新导致插件问题:
- 试试 回退到旧版本的 VSCode,或者
- 重装 C/C++ 插件:
- 删除 VSCode C++ 插件
- 重启 VSCode
- 重新安装
C/C++
扩展(ms-vscode.cpptools) - 尝试重新调试
7. 重新生成 CMake 构建目录
如果调试文件损坏,尝试:
rm -rf build
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
然后重新尝试 F5
调试。
总结
✅ 检查 launch.json
的 miDebuggerPath
是否正确
✅ 确认 gdb
是否已安装,并可以手动运行
✅ 尝试 set new-console off
关闭 tty
相关设置
✅ 可能是 VSCode 插件 Bug,尝试重装 C/C++
插件
✅ 重新生成 CMake 构建目录
试试这些方法,看能否解决你的问题!🚀