跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

Linux 系统下 C/C++ 调试器 gdb/cgdb 实战指南

Linux 环境下 C/C++ 开发离不开调试工具。掌握 gcc 编译参数-g 是前提,随后通过 gdb 或 cgdb 进行调试。内容涵盖启动调试、断点设置、单步执行、变量监视和条件断点等核心功能,帮助开发者高效排查程序错误。

全栈工匠发布于 2026/3/16更新于 2026/6/1417 浏览
Linux 系统下 C/C++ 调试器 gdb/cgdb 实战指南

调试前的准备

程序发布通常有两种模式:debug 和 release。

  • Debug 模式:生成的可执行文件包含调试信息,方便程序员排查代码问题。
  • Release 模式:剥离了调试信息,文件体积更小,但调试器几乎无法工作。

Linux 下的 gcc/g++ 默认生成的是 Release 版本。若要进行调试,必须在编译命令后加上 -g 选项:

gcc -o $@ $^ -g

启动与界面

开始调试前,确保系统已安装 gdb 或 cgdb,且待调试程序是 Debug 版本。

使用 gdb 命令行启动:

gdb 文件名

在 gdb 中,初始界面看不到源代码,需要输入 l (list) 相关命令查看:

  • l:显示源代码,每次 10 行。
  • l 函数名/文件名:列出指定函数或文件的代码。
  • l 文件名:行号:列出指定文件中某行附近的代码。

实际开发中,纯命令行操作略显繁琐。cgdb 作为 gdb 的前端增强版,能直接在屏幕显示代码,其他命令操作与 gdb 一致,体验更佳。

退出调试可使用 ctrl + d 或输入 quit。

核心调试命令

掌握几个基础命令就能覆盖大部分场景:

  • 运行程序:r (run)。从头开始执行,中途想重来再输一次 r 即可。
  • 设置断点:b [文件名:] 行号。在指定位置打断程序。
  • 查看断点:info b。列出当前所有断点及其序号。
  • 删除断点:d 删除全部;d 断点序号 删除指定断点(注意是序号而非行号)。
  • 继续执行:c (continue)。从当前位置跑到下一个断点。
  • 单步跳过:n (next)。逐行执行,遇到函数不进入内部。
  • 单步进入:s (step)。逐行执行,遇到函数会进入内部。
  • 函数返回:f (finish)。执行到当前函数结束。
  • 跳到指定行:until 行号。

提示:在 gdb/cgdb 中直接回车会自动重复上一条命令。

变量监控

调试时观察变量值至关重要:

  • 打印值:p 变量/表达式。即时查看变量状态。
  • 修改变量:set var 变量 = 值。运行时动态修改变量值。
  • 持续显示:display 变量。程序每停一次就自动打印该变量。
  • 取消显示:undisplay 变量序号。
  • 监视变化:watch 变量。当变量值在运行期间发生变化时自动暂停。常用于检查不该被修改的变量是否意外变动。

条件断点

断点可以设置触发条件,避免不必要的中断。

创建带条件的断点:

b 位置 if 条件

例如 b 10 if i == 5,表示在第 10 行设断点,仅当 i 等于 5 时才生效。

为已有断点添加条件:

condition 断点序号 条件

这样既能精准定位逻辑分支,又能减少无效等待。

目录

  1. 调试前的准备
  2. 启动与界面
  3. 核心调试命令
  4. 变量监控
  5. 条件断点
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Spring AI MCP Server 集成与示例
  • STM32F103RC 与 TFT-LCD 电子相册开发及图片解码算法详解
  • Linux 路径符号详解:~、. 和 / 的含义与区别
  • 贪心算法详解:核心思想与活动选择问题实战
  • 人工智能:自然语言处理在教育领域的应用与实战
  • OpenClaw + cpolar 实现本地 AI 公网访问教程
  • OpenClaw 多机器人多 Agent 模式:打造你的 AI 助手团队
  • File-Transfer-Go 开源跨平台文件传输工具
  • Python 函数闭包概念详解与应用实例
  • LangChain:LLM 大语言模型编程框架详解
  • Streamlit 框架介绍:用 Python 快速构建数据应用
  • AI 产品经理技术教程:能力模型、发展史与学习路径
  • Win11 原生 PowerShell 运行 Claude Code 接入 Gemini 模型
  • VSCode 本地运行 DeepSeek 模型指南
  • VRM4U 插件在 Unreal Engine 5 中的使用指南
  • Python 调用 Web Unlocker API 获取亚马逊数据
  • 基于 AI 的智能算力分配:云原生架构与实践
  • 基于 OpenClaw 打造飞书 AI 办公机器人:本地模型与技能自动化实战
  • LeetCode 221. 最大正方形
  • SpringBoot 4.0 新特性整合项目实战

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online