在 Ubuntu 下进行 C++ 调试,常见且推荐的方式是使用 GDB(命令行)或 VS Code + GDB(图形界面)。下面从基础到常用操作逐步说明。
sudo apt update
sudo apt install build-essential gdb
-g没有 -g 无法调试
g++ -g main.cpp -o main
gdb ./main
| 命令 | 作用 |
|---|---|
run / r |
运行程序 |
break main |
在 main 函数设断点 |
break 行号 |
在指定行设断点 |
break 文件:行号 |
指定文件行号 |
info break |
查看断点 |
delete 断点编号 |
删除断点 |
next / n |
单步(不进函数) |
step / s |
单步(进入函数) |
continue / c |
继续执行 |
print 变量 / p x |
打印变量 |
backtrace / bt |
查看调用栈 |
frame 编号 |
切换栈帧 |
quit |
退出 |
gdb ./main
(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
(gdb) continue
程序崩溃后:
gdb ./main
(gdb) run
崩溃时会自动停住,然后:
(gdb) backtrace
可定位出错函数。
sudo apt install code
或官网下载
Ctrl+Shift+D → 创建 launch.json{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb"
}
]
}
F5 开始调试p xp *ptrbreak main.cpp:10 if i == 5
ulimit -c unlimited
./main
gdb ./main core
| 场景 | 推荐 |
|---|---|
| 服务器 / 无界面 | GDB |
| 学习 / 新手 | VS Code |
| 复杂项目 | VS Code + CMake |
如果你愿意,可以告诉我:
我可以给你更具体的调试方案。