温馨提示×

ubuntu gcc调试怎么操作

小樊
52
2026-09-12 23:13:02
栏目: 智能运维

在 Ubuntu 下使用 GCC 调试程序,通常配合 GDB(GNU Debugger) 来进行。下面从最基础到常用操作给你一个完整流程。


一、安装 GCC 和 GDB

一般 Ubuntu 自带 gcc,如果没有:

sudo apt update
sudo apt install gcc gdb

验证:

gcc --version
gdb --version

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

必须加 -g 参数,否则无法调试。

gcc -g main.c -o main

如果是多个文件:

gcc -g main.c func.c -o main

推荐(开启警告):

gcc -g -Wall main.c -o main

三、使用 GDB 调试

1. 启动 GDB

gdb ./main

进入 GDB 后提示符是:

(gdb)

2. 常用 GDB 命令(重点)

✅ 设置断点

break main          # 在 main 函数处断点
break 10            # 在第 10 行断点
break func.c:20     # 指定文件行号

✅ 运行程序

run
run arg1 arg2       # 带命令行参数

✅ 单步执行

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

✅ 查看变量

print x
print arr[0]
p *ptr

✅ 查看调用栈

backtrace
bt

✅ 继续执行

continue

✅ 删除断点

delete 1
clear main

✅ 退出 GDB

quit

四、一个完整调试示例

示例代码 test.c

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int main() {
    int x = 3, y = 4;
    int z = add(x, y);
    printf("z = %d\n", z);
    return 0;
}

编译

gcc -g test.c -o test

调试

gdb ./test
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) step
(gdb) print a
(gdb) continue

五、常见错误 & 提示

❌ 没有 -g 编译

No symbol table info available

✅ 解决:重新 gcc -g 编译

❌ 段错误(Segmentation fault)

run
bt

查看是哪一行出错


六、进阶(可选)

  • watch x:监视变量变化
  • info breakpoints:查看断点
  • set args:设置运行参数
  • layout src:图形化源码(TUI 模式)

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

  • 你是 C / C++
  • 是 命令行程序 / 多线程 / 段错误
  • 还是 想用 VS Code 调试

我可以直接给你对应场景的操作步骤。

0 踩