温馨提示×

centos如何调试gcc程序

小樊
38
2026-10-05 16:22:18
栏目: 智能运维

在 CentOS 上调试用 gcc 编译的 C/C++ 程序,通常分为编译带调试信息、使用 gdb 调试、以及常见调试手段几个部分。下面按实用流程说明。


一、准备调试环境

1. 安装 gcc 和 gdb

sudo yum install -y gcc gcc-c++ gdb

查看版本:

gcc --version
gdb --version

二、编译带调试信息的程序

关键:加 -g 选项

gcc -g -O0 -o test test.c

说明:

  • -g:生成调试信息
  • -O0:关闭优化(避免变量被优化掉,调试更直观)
  • -Wall:建议加上,显示警告

C++ 示例:

g++ -g -O0 -o test test.cpp

三、使用 gdb 调试

1. 启动 gdb

gdb ./test

2. 常用 gdb 命令

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

示例:

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

四、调试崩溃(Segmentation fault)

1. 运行后崩溃

./test
Segmentation fault (core dumped)

2. 使用 core 文件

ulimit -c unlimited
./test
gdb ./test core

查看崩溃位置:

(gdb) bt

五、附加调试(已运行程序)

ps aux | grep test
gdb -p <pid>

六、日志与打印调试(简单有效)

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

或 C++:

std::cerr << "debug: " << x << std::endl;

七、常见问题

1. 看不到变量值

  • 没加 -g
  • 开了 -O2 优化

✅ 解决:

gcc -g -O0

2. gdb 找不到调试信息

确认:

file test

应显示 with debug_info


八、推荐调试组合

gcc -g -O0 -Wall -Wextra -o test test.c
gdb ./test

如果你有具体程序 / 报错信息 / 想调试的内容(内存?多线程?崩溃?),可以直接贴出来,我可以帮你一步步分析。

0 踩