在 Debian 上用 GCC 调试程序,通常配合 GDB 使用。下面从「编译 → 调试 → 常用技巧」一步步说明。
sudo apt update
sudo apt install build-essential gdb
build-essential:包含 gcc、g++、makegdb:调试器test.c#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int x = 3;
int y = 4;
int z = add(x, y);
printf("z = %d\n", z);
return 0;
}
-g)gcc -g -O0 test.c -o test
说明:
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉)gdb ./test
| 命令 | 作用 |
|---|---|
run / r |
运行程序 |
break main |
在 main 函数下断点 |
break test.c:10 |
在指定行下断点 |
next / n |
单步执行(不进入函数) |
step / s |
单步进入函数 |
print x / p x |
查看变量 |
backtrace / bt |
查看调用栈 |
continue / c |
继续执行 |
quit / q |
退出 |
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) step
(gdb) backtrace
./test
# Segmentation fault
gdb ./test
(gdb) run
# 程序崩溃后
(gdb) backtrace
可快速定位是哪一行导致段错误。
ulimit -c unlimited
运行程序产生 core 文件后:
gdb ./test core
(gdb) bt
gdb -tui ./test
sudo apt install ddd
# 或
sudo apt install nemiver
<optimized out>✅ 解决:
gcc -g -O0
✅ 检查:
file test
应有 with debug_info
如果你愿意,可以告诉我:
我可以给你更针对性的调试方案。