在 Linux 下用 C++ 调试,常见且推荐的方式是 GDB / GDB + IDE / VS Code。下面从最基础到常用方案一步步说明。
g++ -g -O0 -o test test.cpp
参数说明:
-g:生成调试信息(必须)-O0:关闭优化(否则变量可能被优化掉)gdb ./test
常用命令:
| 命令 | 说明 |
|---|---|
run / r |
运行程序 |
break main |
在 main 设断点 |
break test.cpp:10 |
在第 10 行断点 |
next / n |
下一行(不进入函数) |
step / s |
进入函数 |
print x |
打印变量 |
backtrace / bt |
查看调用栈 |
continue / c |
继续执行 |
quit |
退出 |
示例:
(gdb) break main
(gdb) run
(gdb) next
(gdb) print i
gdb --args ./test arg1 arg2
或进入 gdb 后:
set args arg1 arg2
run
ulimit -c unlimited
./test
生成类似:
core 或 core.12345
gdb ./test core
查看崩溃位置:
bt
sudo apt install g++ gdb
VS Code 插件:
g++ -g -O0 -o test test.cpp
launch.json在 VS Code 中:
Run and Debug → create a launch.json
示例配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/test",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
然后按 F5 即可调试。
set(CMAKE_BUILD_TYPE Debug)
或:
cmake -DCMAKE_BUILD_TYPE=Debug ..
这样自动带 -g,无需手动加。
✅ 查看 STL 容器(vector / map)
set print pretty on
print vec
✅ 条件断点
break test.cpp:20 if i == 5
✅ 多线程调试
info threads
thread 2
| 场景 | 推荐 |
|---|---|
| 学习 / 快速定位 | GDB |
| 日常开发 | VS Code + GDB |
| 大型项目 | CMake + VS Code |
| 线上崩溃 | core dump + GDB |
如果你愿意,可以告诉我:
我可以给你一份完全针对你环境的配置示例。