在 Ubuntu 下使用 gcc 进行调试,通常配合 gdb(GNU Debugger)。下面从「编译 → 调试 → 常用命令」给你一个完整入门说明。
sudo apt update
sudo apt install gcc gdb
验证:
gcc --version
gdb --version
必须加 -g 选项,否则 gdb 无法调试。
gcc -g -o test test.c
推荐(开启警告):
gcc -g -Wall -o test test.c
gdb ./test
进入 gdb 后,命令行提示符变成:
(gdb)
| 命令 | 作用 |
|---|---|
run / r |
运行程序 |
break 行号 |
在指定行设断点 |
break 函数名 |
在函数入口设断点 |
info break |
查看断点 |
delete 断点号 |
删除断点 |
next / n |
单步执行(不进入函数) |
step / s |
单步执行(进入函数) |
print 变量 / p |
打印变量值 |
continue / c |
继续执行 |
backtrace / bt |
查看函数调用栈 |
frame n |
切换栈帧 |
quit / q |
退出 gdb |
// test.c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int x = 3, y = 4;
int z = add(x, y);
printf("z = %d\n", z);
return 0;
}
调试流程:
gcc -g -o test test.c
gdb ./test
(gdb) break main
(gdb) run
(gdb) next
(gdb) step
(gdb) print z
(gdb) continue
如果程序崩溃:
ulimit -c unlimited
./test
生成 core 文件后:
gdb ./test core
查看崩溃位置:
(gdb) bt
CFLAGS = -g -Wall
test: test.c
gcc $(CFLAGS) -o test test.c
cgdb:带代码高亮的 gdbvalgrind:内存泄漏检测gdbgui:图形界面 gdb如果你愿意,可以告诉我:
我可以给你更针对性的调试方案。