温馨提示×

Debian怎么用GCC调试程序

小樊
39
2026-07-30 09:13:21
栏目: 智能运维

在 Debian 上用 GCC 调试程序,通常是指 编译时加入调试信息 + 用 gdb 调试。下面按常见流程一步步说明。


一、安装必要工具

1. 安装 GCC 和 GDB

sudo apt update
sudo apt install gcc gdb

如果是 C++ 程序:

sudo apt install g++ gdb

二、用 GCC 编译并加入调试信息

1. 基本示例程序

// hello.c
#include <stdio.h>

int main() {
    int a = 10;
    int b = 0;
    int c = a / b;   // 故意制造错误
    printf("%d\n", c);
    return 0;
}

2. 编译(关键:-g

gcc -g hello.c -o hello

-g:生成调试信息(必须)
✅ 不要加 -O2 等优化,否则调试会混乱


三、使用 GDB 调试程序

1. 启动 GDB

gdb ./hello

进入 GDB 提示符:

(gdb)

2. 常用 GDB 调试命令

命令 作用
run / r 运行程序
break main 在 main 函数设断点
break hello.c:6 在第 6 行设断点
next / n 单步执行(不进入函数)
step / s 单步执行(进入函数)
print a 打印变量
backtrace / bt 查看调用栈
continue / c 继续执行
quit / q 退出 GDB

3. 示例调试流程

(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
(gdb) continue

如果程序崩溃:

(gdb) run
Program received signal SIGFPE, Arithmetic exception.
(gdb) backtrace

四、调试已崩溃的程序(core dump)

1. 开启 core dump

ulimit -c unlimited

再次运行程序:

./hello

会生成 corecore.<pid> 文件。

2. 用 GDB 分析

gdb ./hello core

然后:

bt

五、调试 Makefile 项目

如果是 Makefile 项目,确保:

CFLAGS = -g -Wall

然后:

make clean
make
gdb ./your_program

六、常见错误

没有加 -g

gcc hello.c -o hello

→ 调试信息缺失,GDB 很难用

开启优化

gcc -O2 -g hello.c

→ 变量可能被优化掉

✅ 推荐:

gcc -g -O0 -Wall hello.c

七、进阶工具(可选)

  • gdb tui:带源码窗口的 GDB
  • cgdb:更友好的 GDB 前端
sudo apt install cgdb
cgdb ./hello

如果你愿意,可以把 你的程序代码 / 报错信息 / 想调试的问题 发出来,我可以一步步帮你分析。

0