Linux开发工具【gdb】

简介: Linux开发工具gdb,基本操作和常用指令详细讲解,干货满满!

Linux开发工具【gdb】

程序的发布方式有两种,debug模式(调试版本)和release模式(发布版本)。Linuxgcc/g++出来的二进制程序,默认是release模式。无法保证我们的代码有时候会出现问题,这时就要使用Linux的调试器gdb进行调试,下面我们就来讲讲gdb的使用

1. 可调试文件

上面说过gcc/g++默认会生成release版本的可执行程序,我们可以使用指令来查看可执行程序中是否有调试信息

readelf -S 可执行程序 | grep -i debug    //查看可执行程序中的调试信息

这里我们会发现什么信息都没查到

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

完成这一操作直接在Makefile文件中做出修改即可

再次生成可执行程序就可以看到调试信息了

2. gdb调试操作

没有gdb的话可以自行下载

sudo yum install -y gdb  //安装gdb

2.1 进入与退出调试

生成可调试文件后,使用指令gdb 可调试文件名即可进入调试

gdb 可调试文件名  //进入调试

出现(gdb)标志了就表示进入gdb

使用q指令就可以直接退出gdb调试

q  //退出gdb调试

2.2 查看代码

通过l/list指令查看代码,查看代码的时候不会影响到其他调试指令

l/list       //默认查看代码中间的十行
l/list 1   //从代码第一行开始查看其前后十行

还可以使用指令list/l函数名来列出该函数的源代码

==注意:==所有查看内容的指令并不会影响调试的指令

2.3 运行和断点

指令r/run可以运行程序,没有断点的话程序会直接运行出结果

r/run  //运行程序

使用指令b/break 行号/函数名可以在程序中设置断点

b/break 行号    //在指定行号设置断点
b/break 函数名  //在指定函数设置断点

使用指令info b/break可以查看所有断点信息

info b/break  //查看所有断点信息

Num这一列就是表示断点的编号,它会一直累加,直到调试结束

使用指令d 断点编号可以取消断点

d 断点编号  //取消指定断点

有了运行和断点下面我们就可以进行调试了

2.4 单行和单步调试

使用指令n/next进行单行调试,单行调试就是逐过程调试,向下调试的时候不会进入函数内部

n/next  //单行调试

使用指令s/step进行单步调试,单行调试就是逐语句调试,向下调试的时候会进入函数内部

s/step  //单步调试

2.5 常用调试指令

gdb的使用门槛较高,需要多加练习,下面附上一些gdb常用调试指令,没列举到的大家可以自行查阅资料,希望能给大家带来帮助

list/l 行号             //显示源代码,接着上次的位置每次十行往下列

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

r/run                     //运行程序

s/step                     //逐语句(进入函数)

n/next                     //逐过程(不进入函数)

break/b 行号               //在改行设置断点

info break               //查看断点信息

d/delete n                //删除序号为n的断点

d/delete               //删除所有断点

disable breakpoint n   //禁用序号为n的断点

enable breakpoint n    //启用序号为n的断点

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

p 变量名                //打印变量值

set var 表达式(比如:i = 100)  //修改变量的值

display 变量名          //跟踪查看一个变量,每次停下来都显示它的值(长显示)

undisplay 序号          //取消序号对应的变量的跟踪

until 行号              //跳转到对应的行号所在行,执行完区间代码

finish                    //进入一个函数执行完该函数就停下来

continue/c                //从一个断点处直接运行至下一个断点处

q/quit                    //退出gdb调试器

Linux开发工具gdb,到这里就介绍结束了,本篇文章对你由帮助的话,期待大佬们的三连,你们的支持是我最大的动力!

文章有写的不足或是错误的地方,欢迎评论或私信指出,我会在第一时间改正

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
4月前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
67 10
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
118 3
|
4月前
|
NoSQL Linux 编译器
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
如何配置环境并使用QEMU虚拟机结合GDB进行Linux内核代码的断点调试,包括安装QEMU、交叉编译工具链,编译内核以及通过GDB远程连接进行调试的详细步骤。
184 0
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
|
6月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
49 1
|
5月前
|
NoSQL Linux 开发工具
【linux】在linux操作系统下快速熟悉开发环境并上手开发工具——体验不一样的开发之旅
【linux】在linux操作系统下快速熟悉开发环境并上手开发工具——体验不一样的开发之旅
|
6月前
|
NoSQL Linux 开发工具
【Linux】Linux环境基础开发工具_6
【Linux】Linux环境基础开发工具_6
41 0
|
6月前
|
小程序 Linux 开发工具
【Linux】Linux环境基础开发工具_5
【Linux】Linux环境基础开发工具_5
30 0
|
6月前
|
小程序 Linux 开发工具
【Linux】Linux环境基础开发工具_4
【Linux】Linux环境基础开发工具_4
37 0
|
6月前
|
Linux 开发工具 C语言
【Linux】Linux环境基础开发工具_3
【Linux】Linux环境基础开发工具_3
24 0
|
6月前
|
Linux Shell 开发工具
【Linux】Linux环境基础开发工具_2
【Linux】Linux环境基础开发工具_2
20 0

热门文章

最新文章