news 2026/10/23 3:04:12

Linux 学习笔记(十三):高效排错利器——GDB 调试器入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 学习笔记(十三):高效排错利器——GDB 调试器入门

一、 Debug 与 Release

Linux 下 GCC 编译出的程序默认是 Release(发布版),不包含调试信息。如果我们需要使用 GDB 进行调试,必须在编译时加上-g选项:

gcc test.c -o test -g

GDB(GNU Debugger)通过保留源码的符号表信息,允许我们在程序运行时查看内部变量状态和调用栈。

二、 核心指令速查表

在终端输入gdb 程序名即可进入调试界面。常用指令如下:

  • l(list):查看源代码。

  • b 行号/函数名(break):设置断点。

  • r(run):运行程序。

  • n(next):逐过程单步执行(不进入函数内部)。

  • s(step):逐语句单步执行(会进入函数内部)。

  • p 变量名(print):打印变量的当前值。

  • c(continue):继续执行到下一个断点。

  • info b:查看所有断点信息。

  • q(quit):退出调试。

三、 实战演示:调试一个加法函数

# 进入 GDB gdb ./test # 在 main 函数处打断点 (gdb) b main # 运行 (gdb) r # 执行下一步,遇到 add 函数时使用 s 进入 (gdb) n (gdb) s # 打印函数参数 a 和 b (gdb) p a # 直接跳转到下一个断点 (gdb) c

四、 进阶技巧

  • display 变量名:设置后,每次单步执行都会自动打印该变量(无需反复敲 p)。

  • watch 变量名:监视变量,一旦其值改变,程序会立刻暂停。适合排查“不知哪里把变量改错了”的 Bug。

总结

GDB 将程序的黑盒运行变成了白盒透明。熟练掌握 GDB,不仅能快速定位 Bug,更是阅读开源代码和深入学习 C/C++ 底层原理的必备技能。

自我实战操作

实战路径:统一在代码大本营下建立新项目。

# 1. 进入代码库大本营,创建 GDB 测试目录 cd ~/linux_study mkdir gdb_test cd gdb_test # 2. 编写测试代码 vim test.c

(输入以下代码,保存退出)

#include <stdio.h> int add(int a, int b) { int sum = a + b; return sum; } int main() { int x = 10; int y = 20; int result = add(x, y); printf("Result is: %d\n", result); return 0; }
实战 1:编译与启动
# 1. 务必加上 -g 选项! gcc test.c -o test -g # 2. 启动 GDB gdb ./test

(此时进入了(gdb)提示符界面)

# 需要提前下载gdb sudo apt install -y gdb
实战 2:看代码、打断点、运行
# 1. 查看代码(小写 L) (gdb) l # 2. 给 main 函数打断点 (gdb) b main # 3. 再给第 15 行(printf那里)打个断点 (gdb) b 15 # 4. 运行程序 (gdb) r # 此时程序会停在 main 函数的第一行 # 5. 看看变量 x 现在是多少 (gdb) p x
\实战 3:单步调试(体验 n 和 s 的区别)
# 1. 连续敲 n(执行完 x=10, y=20, 来到调用 add 那一行) (gdb) n (gdb) n (gdb) n # 2. 此时停在了 int result = add(x, y); 这行 # 用 s 进入 add 函数内部 (gdb) s # 3. 进入后,打印参数 a 和 b 的值 (gdb) p a (gdb) p b # 4. 继续往下走,直接跳到下一个断点(printf 那里) (gdb) c # 5. 看看 result 算出来没有 (gdb) p result # 6. 退出 (gdb) q

(如果你想看图形化代码调试,可以sudo apt install cgdb,然后输入cgdb ./test,上面是代码,下面是调试台)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 3:03:39

文件定位、文件IO

标准io读写归纳总结fputs和fgets最常用文件定位fseek ftell rewindfseek若从末尾开始向后偏移&#xff0c;则偏移多少&#xff0c;系统自动补零多少示例&#xff1a;ftell示例&#xff1a;rewind示例&#xff1a;练习&#xff1a;复制文本文件内容数一个文件里面字母a~z共出现多…

作者头像 李华
网站建设 2026/10/23 3:02:36

光刻胶膜厚怎么测?i线与电子束双曝光工艺解析

mr-EBL 6000.5是一种环氧树脂基化学放大负性光刻胶&#xff0c;对电子束和紫外光均具有感光能力。Flexfilm费曼仪器探针式台阶仪可以实现表面微观特征的精准表征与关键参数的定量测量&#xff0c;精确测定样品的表面台阶高度与膜厚&#xff0c;为材料质量把控和生产效率提升提供…

作者头像 李华
网站建设 2026/10/23 3:02:08

RDMA高速网卡芯片散热方案及导热硅胶片的应用

RDMA高速网卡是AI大模型集群、高性能计算场景下的核心通信部件&#xff0c;800G/1.6T高带宽型号满负载运行时芯片局部热点可达70℃以上&#xff0c;直接引发P99延迟飙升、带宽跑不满&#xff0c;导热硅胶片是其最适配的界面散热方案&#xff0c;可稳定保障724小时长周期运行下的…

作者头像 李华
网站建设 2026/10/23 3:01:53

什么是OSINT-BIBLE?深度解析2026版450+工具开源情报调查宝典

网络安全知识库文档 【免费下载链接】OSINT-BIBLE Comprehensive 2026 OSINT guide — 450 tools, AI intelligence, methodologies & ethics across 35 sections for investigation & threat intel. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/os/OSINT-BI…

作者头像 李华