温馨提示×

ubuntu gcc怎么调试程序

小樊
35
2026-09-16 05:28:47
栏目: 智能运维

在 Ubuntu 下使用 gcc 调试程序,通常配合 gdb(GNU Debugger) 来完成。下面从基础到常用操作给你一个完整说明。


一、编译时加上调试信息

关键:使用 -g 选项

gcc -g -o test test.c

如果是 C++:

g++ -g -o test test.cpp

✅ 不加 -g,gdb 看不到变量名、行号,基本没法调试。


二、启动 gdb 调试

gdb ./test

进入 gdb 后常见命令:

1️⃣ 运行程序

run

或带参数:

run arg1 arg2

2️⃣ 设置断点

break main
break test.c:10
break func_name

查看断点:

info breakpoints

删除断点:

delete 1

3️⃣ 单步执行

next      # 步过函数
step      # 步入函数

4️⃣ 查看变量

print x
print arr[0]

自动显示:

display x

5️⃣ 查看调用栈

backtrace

或简写:

bt

6️⃣ 继续执行

continue

7️⃣ 退出 gdb

quit

三、程序崩溃(Segmentation fault)调试

  1. 编译:
gcc -g -o test test.c
  1. 运行崩溃后:
gdb ./test core

(需要开启 core dump)

开启 core:

ulimit -c unlimited

再次运行程序,会生成 core 文件。


四、常用辅助工具(可选)

1️⃣ valgrind(内存错误)

sudo apt install valgrind
valgrind ./test

2️⃣ CGDB(带代码窗口)

sudo apt install cgdb
cgdb ./test

五、一个最小调试示例

#include <stdio.h>

int main() {
    int a = 5;
    int b = 0;
    printf("%d\n", a / b);  // 会崩溃
    return 0;
}
gcc -g -o test test.c
gdb ./test
(gdb) run

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

  • 你是 C 还是 C++
  • 是 命令行程序 / 多线程 / 嵌入式
  • 遇到的是 崩溃 / 逻辑错误 / 性能问题

我可以给你更针对性的调试方案。

0 踩