【学习笔记之Linux】工具之gdb

简介: 【学习笔记之Linux】工具之gdb

背景知识:


首先我们要知道,程序的发布一共有两种模式,一种是debug模式,是我们程序员自己编写代码的模式,可以进行调试,这个模式下编译出来的程序是包含调试信息的;一种是release模式,是程序的发布模式,测试人员测的也就是这个模式编译出来的程序。release是debug进行优化之后的模式,体量比较轻。但是这个优化是电脑优化的,不是开发人员优化的。所以就有可能出现一些问题。也就造成了一个名场面,测试:你这个程序有个bug;开发:不可能,在我电脑都可以运行。

 在Linux系统中通过gcc/g++编译出来的二进制程序默认是release模式的。

 要使用gdb调试,必须要在源代码生成二进制程序的时候,加上-g选项。


8f2a2a2d5c0c426a8c0931c41e3430ff.png

18367789834448db835d0d13fcab1570.png


常用命令介绍:

 进入调试模式:gdb 要调试的文件


 list/l 行号:显示源代码,每次列10行,如果没有加行号默认从第一行开始列,第二次就从第11行开始列。如果加了行号,就会以行号为中间点列出十行,在行号大于6的情况下,会保证行号出现在第6行。如你输入l 7,它会显示的行号是2、3、4、5、6、7、8、9、10、11;

 list/l 函数名:列出某个函数的源代码;

 r/run:开始调试;

 n/next:单条执行,逐过程;

 s/step:进入函数调用,逐语句;

 b/break 行号:在某一行设置断点;

 break 函数名:在某个函数开头设置断点;

 info break:查看断点信息,因为gdb不是可视化的,不像vs看旁边有没点就能判断是否有断点,所以要知道有哪些断点就需要进行查看,这里的断点被整理成类似表格的东西显示出来,包含了许多信息;

 finish:执行到当前函数返回,然后停止等待命令;

 p/print:打印表达式的值,通过表达式可以修改变量的值或者调用函数

 p 变量:打印变量值;

 set var:修改变量的值;

 c/continue:让暂停的程序继续运行;

 delete breakpoints:删除所有断点;

 delete breakpoints n:删除序号为n的断点;

 disable breakpoints:禁用断点;

 enable breakpoints:启用断点;

 i/info breakpoints:查看当前设置了哪些断点;

 display 变量名:跟踪查看一个变量,每次停下来都会显示它的值

 undisplay:取消对先前设置的变量的跟踪;

 until 行号:跳至行号位置;

 bt/breaktrace:查看各级函数调用及参数;

 i/info locals:查看当前栈帧局部变量的值;

 quit/[ctrl + d]:退出gdb。

307ee634fb35401ca30033f78e35a729.png

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
3月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
403 4
|
3月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
217 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
3月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
321 16
|
5月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
163 1
Linux系统性能调优技巧和相关工具
|
5月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
602 16
|
4月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
7月前
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
340 16
|
6月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
350 0