在 CentOS 上调试用 gcc 编译的 C/C++ 程序,通常分为编译带调试信息、使用 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 ./test
| 命令 | 作用 |
|---|---|
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
./test
Segmentation fault (core dumped)
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;
-g-O2 优化✅ 解决:
gcc -g -O0
确认:
file test
应显示 with debug_info
gcc -g -O0 -Wall -Wextra -o test test.c
gdb ./test
如果你有具体程序 / 报错信息 / 想调试的内容(内存?多线程?崩溃?),可以直接贴出来,我可以帮你一步步分析。