在 Debian 上用 GCC 调试程序,通常配合 GDB 使用。下面从“编译 → 调试 → 常用技巧”给你一个完整说明。
sudo apt update
sudo apt install build-essential gdb
build-essential:包含 gcc、g++、makegdb:调试器验证:
gcc --version
gdb --version
必须加 -g 参数:
gcc -g -O0 main.c -o main
说明:
-g:生成调试符号-O0:关闭优化(避免变量被优化掉,调试更直观)✅ 推荐写法(开发阶段):
gcc -g -O0 -Wall -Wextra main.c -o main
gdb ./main
进入 GDB 界面后:
(gdb) run
break main # 在 main 函数处断点
break main.c:10 # 在第 10 行断点
查看断点:
info breakpoints
删除断点:
delete 1
next # 单步(不进入函数)
step # 单步(进入函数)
print x
print &x
print *p
查看调用栈:
backtrace
bt
continue # 继续运行
quit # 退出 GDB
./main
如果崩溃:
Segmentation fault (core dumped)
gdb ./main
(gdb) run
崩溃后输入:
bt
即可看到崩溃位置。
ulimit -c unlimited
运行程序产生 core 文件后:
gdb ./main core
然后:
bt
CFLAGS = -g -O0 -Wall
main: main.c
gcc $(CFLAGS) main.c -o main
如果你不喜欢命令行:
sudo apt install ddd
ddd ./main
或 VS Code + C/C++ 插件(非常推荐)
❌ 没加 -g → GDB 看不到源码
❌ 开了 -O2 → 变量可能被优化掉
❌ 静态链接导致调试信息不完整
如果你愿意,可以告诉我:
我可以给你更针对性的调试示例。