在 Debian 上用 GCC 调试程序,通常配合 gdb(GNU Debugger)使用。下面从“编译 → 调试 → 常用技巧”一步步说明。
sudo apt update
sudo apt install build-essential gdb
build-essential:包含 gcc、g++、make 等gdb:调试器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("result = %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:8 |
在指定行设断点 |
next / n |
单步执行(不进函数) |
step / s |
单步执行(进入函数) |
continue / c |
继续执行 |
print x / p x |
打印变量 |
backtrace / bt |
查看调用栈 |
quit / q |
退出 gdb |
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) step
(gdb) backtrace
如果程序崩溃:
./test
# Segmentation fault (core dumped)
ulimit -c unlimited
./test
gdb ./test core
然后:
(gdb) backtrace
cgdbsudo apt install cgdb
cgdb ./test
launch.jsonprintf 快速定位(不推荐长期使用)-Wall -Wextra 编译发现潜在问题valgrind 检查内存问题:sudo apt install valgrind
valgrind ./test
如果你有 具体程序 / 报错信息 / 想调试的场景(如多线程、核心转储、Makefile 项目),可以贴出来,我可以针对性讲。