在 Ubuntu 上调试 C++ 程序,常用方式有两种:使用 GDB 命令行调试 和 使用 IDE(如 VS Code / CLion)配合 GDB 调试。下面从基础到进阶给你一个完整指南。
sudo apt update
sudo apt install build-essential gdb
检查是否安装成功:
g++ --version
gdb --version
必须加 -g 参数,否则无法调试。
示例 main.cpp:
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int main() {
int x = 10;
int y = 20;
int z = add(x, y);
cout << z << endl;
return 0;
}
编译:
g++ -g main.cpp -o main
gdb ./main
| 命令 | 说明 |
|---|---|
run / r |
运行程序 |
break 行号 |
在指定行设断点 |
break 函数名 |
在函数入口设断点 |
info break |
查看断点 |
next / n |
单步执行(不进入函数) |
step / s |
单步执行(进入函数) |
print 变量 / p 变量 |
打印变量值 |
continue / c |
继续执行 |
backtrace / bt |
查看调用栈 |
quit |
退出 GDB |
示例:
break main
run
next
print x
step
gdb ./main
run
崩溃后:
bt
可查看是哪一行出错。
catch throw
run
sudo snap install code --classic
tasks.json(编译){
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"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,
"cwd": "${workspaceFolder}"
}
]
}
然后按 F5 启动调试。
sudo apt install valgrind
valgrind ./main
sudo apt install cgdb
cgdb ./main
如果你愿意,可以告诉我:
我可以给你更针对性的调试方案。