Linux操作系统之gdb

gdb Linux操作系统下的调试器

1、debug与relase的区别

我们在Linux下写下这样一段代码
在这里插入图片描述

然后进行编译得到可执行文件
在这里插入图片描述

这样得到的文件可以用gdb进行调试吗?
在这里插入图片描述

可以看到,系统提示我们没有找到调试信息,这是为什么?
因为gcc/g++默认生成的可执行程序是release版本,无法进行调试。
那我们要怎样得到debug版本?

在这里插入图片描述

使用-g选项生成debug版本,可以看到两个版本的大小差别
在这里插入图片描述

同样可以用readelf指令查看debug信息,mytest并没有debug文件,而mytest-debug则有。

2、gdb的基本指令(gdb指令基本都有全称与简写,这里基本全是简写)

gdb 调试文件名 ——》进入gdb调试模式
quit或q退出模式
list或l打印代码(gdb会默认记录上一条命令,如果不输入语句直接回车,就会默认执行上一条命令)
在这里插入图片描述

r重新开始调试,如果没有设置断点,则运行知道程序结束
b 行号 在指定行添加断点(如果改行没有代码则自动将断点设置到最近的位置)
info b 查看断点
d 行号 删除指定行的断点
c转跳到下一个断点
disable 断点编号 关闭断点但是不删除断点
enable 断点编号 开启断点
在这里插入图片描述

n逐过程调试
s逐语句调试
finish 进入完成当前行所在的函数
until 行号 直接运行到指定行(不要跨函数使用)
bt打印栈信息
p 变量名 打印变量数据
display 变量名 常显示变量数据
undisplay 常显示变量编号 取消该编号的常显示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值