温馨提示×

debian gcc怎么调试程序

小樊
42
2026-10-13 16:27:02
栏目: 智能运维

在 Debian 上用 GCC 调试程序,通常配合 GDB 使用。下面从“编译 → 调试 → 常用技巧”给你一个完整说明。


一、安装必要工具

sudo apt update
sudo apt install build-essential gdb
  • build-essential:包含 gcc、g++、make
  • gdb:调试器

验证:

gcc --version
gdb --version

二、编译时加上调试信息(关键)

必须加 -g 参数:

gcc -g -O0 main.c -o main

说明:

  • -g:生成调试符号
  • -O0:关闭优化(避免变量被优化掉,调试更直观)

✅ 推荐写法(开发阶段):

gcc -g -O0 -Wall -Wextra main.c -o main

三、使用 GDB 调试程序

1️⃣ 启动 GDB

gdb ./main

进入 GDB 界面后:

(gdb) run

2️⃣ 设置断点

break main          # 在 main 函数处断点
break main.c:10     # 在第 10 行断点

查看断点:

info breakpoints

删除断点:

delete 1

3️⃣ 单步执行

next     # 单步(不进入函数)
step     # 单步(进入函数)

4️⃣ 查看变量和内存

print x
print &x
print *p

查看调用栈:

backtrace
bt

5️⃣ 继续执行 / 退出

continue   # 继续运行
quit       # 退出 GDB

四、调试崩溃(Segmentation fault)

1️⃣ 运行程序

./main

如果崩溃:

Segmentation fault (core dumped)

2️⃣ 用 GDB 直接定位

gdb ./main
(gdb) run

崩溃后输入:

bt

即可看到崩溃位置。


五、Core Dump 调试(进阶)

启用 core dump

ulimit -c unlimited

运行程序产生 core 文件后:

gdb ./main core

然后:

bt

六、配合 Makefile(推荐)

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 → 变量可能被优化掉
❌ 静态链接导致调试信息不完整


如果你愿意,可以告诉我:

  • 你调试的是 C 还是 C++
  • 是 命令行程序 / 多线程 / 崩溃问题
  • 用的是 纯终端还是 VS Code

我可以给你更针对性的调试示例。

0 踩