温馨提示×

ubuntu gcc如何调试

小樊
33
2026-10-27 13:52:28
栏目: 智能运维

在 Ubuntu 上用 GCC 调试程序,通常分为「编译带调试信息 → 用 gdb 调试 → 常见排错手段」几个步骤。下面给你一套实用流程。


一、安装基础工具

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

二、编译时加上调试信息(非常重要)

1️⃣ 基本调试编译

gcc -g -O0 main.c -o main

参数说明:

  • -g:生成调试信息
  • -O0:关闭优化(否则变量可能被优化掉,调试很痛苦)

✅ 调试时一定要用 -O0


三、使用 GDB 调试

1️⃣ 启动 gdb

gdb ./main

或调试正在运行的程序:

gdb -p <pid>

2️⃣ 常用 GDB 命令(必记)

命令 作用
run / r 运行程序
break main 在 main 函数下断点
break file.c:10 在某一行下断点
next / n 单步(不进入函数)
step / s 单步(进入函数)
print x / p x 打印变量
backtrace / bt 查看调用栈
frame 0 切换栈帧
continue / c 继续执行
quit / q 退出

示例:

break main
run
next
print a
backtrace

四、调试段错误(Segmentation fault)

1️⃣ 直接运行看崩溃位置

./main

2️⃣ 用 gdb 定位

gdb ./main
run

崩溃后:

bt

可看到哪一行导致段错误。


五、核心转储(core dump)调试(进阶)

1️⃣ 开启 core dump

ulimit -c unlimited

运行程序产生 core 文件。

2️⃣ 用 core 调试

gdb ./main core
bt

六、配合 Makefile 调试

CFLAGS = -g -O0

main: main.c
	gcc $(CFLAGS) main.c -o main

七、常见调试辅助手段

1️⃣ 加打印(最简单)

printf("x=%d\n", x);

2️⃣ 静态检查

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

3️⃣ 内存问题(强烈推荐)

sudo apt install valgrind
valgrind ./main

八、图形化调试(可选)

  • cgdb(终端增强)
  • ddd
  • VS Code + GDB

如果你有:

  • 具体报错信息
  • 一份 C/C++ 代码
  • 想调试多线程 / 内存泄漏

可以直接贴出来,我可以一步步帮你调。

0 踩