在 Ubuntu 下调试 C/C++ 程序,最常用的工具是 GDB(GNU Debugger),也可以配合 VS Code / CLion 等图形界面使用。下面按由浅入深介绍设置方法。
sudo apt update
sudo apt install build-essential
sudo apt install gdb
验证:
gdb --version
⚠️ 关键步骤:编译时加 -g
g++ -g main.cpp -o main
如果是多文件:
g++ -g main.cpp func.cpp -o main
✅ 没有 -g,GDB 看不到变量和行号
gdb ./main
| 命令 | 作用 |
|---|---|
run / r |
运行程序 |
break main |
在 main 设断点 |
break 行号 |
在指定行设断点 |
break 文件:行号 |
指定文件断点 |
list / l |
查看源码 |
next / n |
单步(不进函数) |
step / s |
单步(进函数) |
print 变量 / p x |
打印变量 |
continue / c |
继续执行 |
backtrace / bt |
查看调用栈 |
quit / q |
退出 |
(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
gdb --args ./main arg1 arg2
或:
(gdb) run arg1 arg2
gdb ./main
(gdb) run
出错后:
(gdb) bt
可定位哪一行崩溃。
sudo snap install code --classic
tasks.json(编译){
"tasks": [
{
"type": "shell",
"label": "build",
"command": "g++",
"args": ["-g", "main.cpp", "-o", "main"]
}
]
}
launch.json(调试){
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
按 F5 即可调试。
valgrind:内存泄漏sudo apt install valgrind
valgrind ./main
cgdb:带代码窗口的 GDBsudo apt install cgdb
如果你愿意,可以告诉我:
我可以给你更针对性的调试方案。