Linux

Linux GDB 调试指南

范蠡 · 资深开发工程师

2211人已买
详情
目录(20)

虽然 Linux 系统下读者编写 C/C++ 代码的 IDE 可以自由选择,但是调试生成的 C/C++ 程序一定是直接或者间接使用 GDB。可以毫不夸张地说,所有使用 Linux 作为服务器操作系统的项目的开发、调试、故障排查都是利用 GDB 完成的。调试是开发流程中一个非常重要的环节,因此对于从事 Linux C/C++ 的开发人员熟练使用 GDB 调试是一项基本要求

一些初中级开发者可能想通过阅读一些优秀的开源项目来提高自己的编码水平,但是只阅读代码,不容易找到要点,或者误解程序的执行逻辑,最终迷失方向。如果能实际利用调试器去把某个开源项目调试一遍,学习效果才能更好。站在 Linux C/C++ 后台开发的角度来说,学会了 GDB 调试,就可以对各种 C/C++ 开源项目(如 Redis、Apache、Nginx 等)游刃有余。简而言之,GDB 调试是学习这些优秀开源项目的一把钥匙。

另外,在实际开发中我们总会遇到一些非常诡异的程序异常或者问题崩溃的情况,解决这些问题很重要的一个方法就是调试。而对于 Linux C/C++ 服务来说,熟悉 GDB 各种高级调试技巧非常重要

专栏亮点

  • 从 What、How、Why 三个角度来介绍 GDB 调试中的技巧和注意事项,引用的示例也不是“helloworld”式的 demo,而是以时下最流行的内存数据库 Redis 为示例对象
  • 从基础的调试符号原理,到 GDB 启动调试的方式,再到常用命令详解,接着介绍 GDB 高级调试技巧和一些更强大的 GDB 扩展工具,最后使用 GDB 带领读者分析 Redis 服务器端和客户端的网络通信模块
  • 读者不仅可以学习到实实在在的调试技巧和网络编程知识,也可以学习到如何梳理开源软件项目结构和源码分析思路

专栏结构

本专栏分为五大部分,共计 19 篇(含开篇词)。

  • 第一部分(第 2 ~ 5 篇)主要介绍了 Linux C/C++ 调试的一些基础知识。例如,core 文件的基础知识、GDB 调试启动进程的方法。
  • 第二部分(第 6 ~ 8 篇)详细介绍了 GDB 常用调试命令的使用和注意事项,这里不是孤零零地介绍每个命令的使用,而是结合具体的使用实例来说明。
  • 第三部分(第 9 ~ 10 篇)介绍了我在实际工作中开发 Linux 后台 C/C++ 服务时,利用 GDB 调试和排查问题使用的一些高级实用技巧,自成一套体系,如果读者仅对这部分内容感兴趣也可以单独阅读相关内容。
  • 第四部分(第 11 ~ 14 篇)介绍了基于 GDB 的一些相关的升级版调试工具,主要内容是 CGDBVisualGDBCGDB 是基于 GDB 的一款可以在调试过程中以图形化界面显示和跳转源码的开源工具,为很多觉得 GDB 自带的 list 显示源码不方便的开发者带来更好的调试体验;而 VisualGDB 是 Visual Studio 的一个插件,其基于 SSH 协议和 Samba Server,有了它,读者可以利用 Visual Studio 这一强大的图形化 IDE 远程调试 Linux 机器上的程序,不必再频繁地输入各种 GDB 命令,这也为广大 Windows C/C++ 开发者想学习 Linux C/C++ 开发带来很大的方便。
  • 第五部分(第 15 ~ 20 篇)的内容是一个完整、详尽的 GDB 实例教程,通过 GDB 调试来带领读者学习时下最流行的内存数据库 Redis 的网络通信模块代码。学完这部分内容不仅可以进一步熟悉 GDB 调试,同时还可以学习到 Redis 和网络编程相关知识。

作者介绍

avatar

适宜人群

  • 学习 Linux C/C++ 开发和系统原理的读者
  • 想要提高调试和排障能力的 C/C++ 开发人员
  • 学习 Redis 网络通信模块设计思想的读者
  • 想要整体把握开源 C/C++ 项目技巧的读者

你将获得什么

  • GDB 调试的常用方法和技巧
  • Redis 和网络编程相关知识
  • 开源软件项目结构和源码分析思路

订阅须知

  • 本专栏为图文内容,共计 20 篇。
  • 本专栏为虚拟产品,一经付费概不退款,敬请谅解。
  • 本专栏也可在 gitbook.cn 上购买和阅读。

订阅福利

  • 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
  • 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。
  • 订阅本专栏后,即可加入专属交流群,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 4 篇文末说明)。

购买须知

  • 本课程内容版权归北京码字科技发展有限公司独家所有,未经授权,不得转载。
  • 本课程为虚拟产品,一经付费概不退款,敬请谅解。
  • 添加 GitChat 助教俏俏(微信 ID: gitchat2025),加入免费技术交流群。
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容