发布于2026-07-12 阅读(0)
扫一扫,手机访问
在 CentOS 上调试 C++ 代码,最经典的组合莫过于 GCC 加上 GDB。这套工具链虽然看起来命令行有点多,但一旦上手,调试效率不比图形界面差。下面把整个流程拆开来讲,其实每一步都很直接。

编译时带上调试信息
这是最基础的一步——用 g++ 编译的时候,加上 -g 选项。没有这个参数,生成的可执行文件里不包含符号信息,后面 GDB 就无从知道变量名、行号这些关键内容。
g++ -g -o myprogram myprogram.cpp启动 GDB
直接用 GDB 加载刚才编译好的程序:
gdb myprogram
进入交互界面后,就可以开始下命令了。
设置断点
在 main 函数处停住,是最常见的做法。当然也可以在任意函数上设断点:
break main
break function_name
断点设好比提前在地图上标好“检查点”,程序跑到那里就会自动暂停。
运行程序
在 GDB 里输入 run,程序就开始执行。如果之前设了断点,它会在第一个断点处停下来等你。
run检查变量和内存
程序暂停后,最常用的就是查看变量值:
print variable_name
如果想看调用栈(比如当前是哪个函数调了哪个函数),用 backtrace。想直接看栈上的内存内容,可以搭配 x/10xw $sp 这种命令,按十六进制格式打印栈指针附近的10个字。
单步执行
step(缩写 s)会进入函数内部一步步走;next(缩写 n)则是把整个函数调用当作一步跳过,不进入内部。两者区别要分清,不然容易走偏。
step
next继续执行
如果已经检查完当前断点处的状态,想跑到下一个断点,就用 continue(缩写 c):
continue退出 GDB
调试结束,输入 quit 即可:
quit善用 GDB 脚本
如果每次调试都要重复输入一大堆命令,可以写成脚本文件,GDB 支持批量执行。把常用断点、打印命令、甚至条件判断写进去,能省下不少重复劳动。
图形界面也不是不行
虽然命令行 GDB 很强大,但如果你更习惯图形化操作,CLion、Eclipse CDT 或者 VS Code 都内置了 GDB 的支持,设置断点、查看变量、拖拽调试,体验和大型 IDE 无异。不过话说回来,底层调用的还是 GDB,学会命令行版能让你对调试过程理解得更透彻。
调试这件事,说到底就是一个反复“设断点→跑→查变量→改代码→再跑”的循环。刚开始可能会觉得记不住命令,但多用几次就会发现,GDB 的核心命令不过那十来条,熟练之后找 bug 的速度会明显上一个台阶。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8