首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux: 调试器gdb/cgdb

Linux: 调试器gdb/cgdb

作者头像
用户11290664
发布2025-08-21 08:18:38
发布2025-08-21 08:18:38
790
举报
文章被收录于专栏:学习学习

调试器gdb/cgdb

我们发布软件有debug和release版本 gcc/g++默认模式是release模式,不是dubug

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g 选项,如果没有添加,程序无法被编译,程序要调试必须是debug模式。

这样我们make后就是debug程序。也能运行,但是体积更大,因为内部有调试信息,可以供程序员调试。

gdb 核心调试命令(按调试流程分类)

  1. 基础控制:启动、暂停、继续执行

  1. 断点管理:控制程序暂停位置

命令 全称 功能

  1. 查看与修改数据:变量、内存、表达式 程序暂停时(如断点触发后),可查看或修改变量、内存值,验证逻辑是否正确。

  1. 调用栈分析:定位函数调用关系 当程序崩溃或暂停时,通过调用栈(Call Stack)可查看 “当前执行到哪个函数,这个函数由谁调用,上层还有哪些函数”,快速定位问题所在。

  1. 其他实用功能

五、常用快捷键

gdb 支持类似 shell 的快捷键,提高操作效率:

↑/↓:查看历史命令(避免重复输入) Tab:自动补全命令或文件名 Ctrl + c:中断当前正在执行的 gdb 命令(如程序运行时强制暂停)

cgdb

要先安装

然后cgdb xxx

这样上面是代码界面,下面是调试界面,比gdb方便多了

cgcb操作

c跳到下一个断点,条件断点的使用c跳,可以使用条件都安到也可以condition 添加条件断点

每一次函数调用的过程就是形成栈栈帧的过程 函数调用就是入栈的过程

这里result具有常量属性,是写在寄存器中,具有常属性

这里汇编语言就是call了Sum函数后把值存在寄存器中,然后把eax寄存器里的值赋值给函数内部栈上的一个临时变量n。

注意: • 条件断点添加常⻅两种⽅式:1. 新增 2. 给已有断点追加 • 注意两者的语法有区别,不要写错了。 • 新增: b ⾏号/⽂件名:⾏号/函数名 if i == 30(条件) • 给已有断点追加:condition 2 i==30, 其中2是已有断点编号,没有if

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 调试器gdb/cgdb
  • gdb 核心调试命令(按调试流程分类)
  • 命令 全称 功能
  • cgdb
  • cgcb操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档