在 CentOS 上使用 GDB(GNU Debugger) 调试程序,基本流程如下。我会从 安装 → 编译 → 启动调试 → 常用命令 逐步说明,适合初学和实际使用。
sudo yum install -y gdb
如果提示找不到包(极少情况):
sudo yum install -y epel-release
sudo yum install -y gdb
验证安装:
gdb --version
必须使用 -g 选项,否则 GDB 看不到源码和变量信息。
// test.c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int x = 10;
int y = 20;
int z = add(x, y);
printf("result = %d\n", z);
return 0;
}
编译:
gcc -g -o test test.c
✅ 不要加 -O2 等优化选项,否则调试时变量可能被优化掉。
gdb ./test
在 GDB 中:
run
或带参数运行:
run arg1 arg2
break main
break test.c:8
break add
run
next # 下一步(不进入函数)
step # 进入函数
print x
print add(1,2)
backtrace
bt
continue
list
list main
info breakpoints
delete 1
ulimit -c unlimited
./test
(如果发生段错误,会生成 core 或 core.xxx)
gdb ./test core
查看崩溃位置:
bt
ps -ef | grep test
gdb -p PID
退出:
detach
quit
✅ 查看指针内容
print *ptr
✅ 查看内存
x/10xw ptr
✅ 条件断点
break test.c:10 if x == 5
✅ 编译时没加 -g
✅ 源码路径变了
<optimized out>✅ 不要使用 -O2
gdb ./test
help
GDB 内置帮助非常详细。
如果你愿意,可以告诉我:
我可以给你 针对性的调试方案。