在 Debian 下使用 GCC 调试 C/C++ 代码,通常流程是:编译时加调试信息 → 用 gdb 调试。下面按实际操作步骤说明。
sudo apt update
sudo apt install gcc g++ gdb
如果是 C++ 程序,用 g++;C 程序用 gcc。
gcc -g main.c -o main
或 C++:
g++ -g main.cpp -o main
✅
-g表示生成调试信息(必须)
gcc -g -O0 -Wall -Wextra main.c -o main
参数说明:
-g:生成调试信息-O0:关闭优化(避免变量被优化掉)-Wall -Wextra:开启常见警告gdb ./main
| 命令 | 说明 |
|---|---|
run / r |
运行程序 |
break 行号 |
设置断点 |
break 函数名 |
在函数入口设断点 |
next / n |
单步执行(不进入函数) |
step / s |
单步执行(进入函数) |
continue / c |
继续执行 |
print 变量 |
查看变量值 |
backtrace / bt |
查看函数调用栈 |
info locals |
查看局部变量 |
quit / q |
退出 GDB |
(gdb) break main
(gdb) run
(gdb) next
(gdb) print i
(gdb) backtrace
./main
ulimit -c unlimited
./main
生成 core 文件后:
gdb ./main core
然后查看:
bt
gdb --args ./main arg1 arg2
或者:
(gdb) set args arg1 arg2
(gdb) run
print *ptr
print arr[0]@5
break 20 if i == 10
info threads
thread 2
如果不习惯命令行:
sudo apt install ddd
ddd ./main
或使用 VS Code + GDB(更友好)。
gcc -g -O0 main.c -o main
gdb ./main
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) quit
如果你愿意,可以把:
发给我,我可以针对你的具体代码一步步调试说明。