gdb指令随笔

本文详细介绍了在Linux环境下使用GDB调试器的各种命令,包括内存查看、反汇编、运行文件、设置历史记录等,帮助读者深入了解GDB的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下自己使用过的gdb命令
linux指令

objdump -d bomb > bomb.asm

history

gdb指令

GDB用法及命令大全

GDB基本调试命令

GDB常用命令大全

gdb查看内存 (x/100xb)

disas 函数 反汇编

x/s 查看内存,以字符串

run 文件,文件内容做参数

set history filename gdb.history
set history save on
set history size 1000

shell cat gdb.history 查看历史指令

p $rdi //显示rdi寄存器的值,注意和x的区别,这只是显示rdi的值,而不是rdi指向的值

print打印指令

p fun_name 			//打印函数的地址,需要保留符号
p 0x10-0x08 		//计算0x10-0x08的结果
p &a 				//查看变量a的地址
p a					//查看变量a的值
p *array@len		//动态数组,@的左边是第一个内存的地址的值,@的右边你想查看内存的长度
p *(0x123456) 		//查看0x123456地址的值,注意和x指令的区别,x指令查看地址的值不用星号
p $rdi 				//显示rdi寄存器的值,注意和x的区别,这只是显示rdi的值,而不是rdi指向的值
        p *($rdi) 	//显示rdi指向的值
p/c $eax			//用字符显示eax寄存器内容

display/5i $pc 展示接下来的5句话

查命令

image-20231209001856070

  • x/8a: 这个命令表示以"ASCII 字符"的格式打印内存中的内容。它会将指定地址开始的连续 8 个字节按照 ASCII 字符的形式进行解释,并打印出来。
  • x/8x: 这个命令表示以"十六进制数"的格式打印内存中的内容。它会将指定地址开始的连续 8 个字节以十六进制数的形式进行打印。

总的来说,x/8a 会以 ASCII 字符的形式显示内存内容,而 x/8x 则会以十六进制数的形式显示相同的内存内容。

查看汇编指令

image-20231209015353838

内容。

查看汇编指令

[外链图片转存中…(img-y5gDLRvH-1702123584055)]

### GDB调试器相关指令及其用法 #### 1. 断点管理 GDB提供了多种方式来设置、查看和删除断点,这些操作对于控制程序执行流程至关重要。 - **设置断点** 使用 `break` 或其缩写形式 `b` 来指定位置创建断点。可以通过函数名、文件名加行号或者地址等方式设定。 ```bash break main # 在main函数处设断点 break f2.c:10 # 在f2.c文件第10行设断点 break *0x804841a # 在具体内存地址上设断点 ``` - **查看断点信息** 可通过 `info breakpoints` 或者简写的 `info b` 查阅已有的断点状态以及被命中的次数等细节[^4]。 ```bash info breakpoints # 显示所有断点的状态 ``` - **删除断点** 利用 `delete` 命令加上对应的断点编号即可移除不需要的断点。注意不能直接通过行号删除断点。 ```bash delete 1 # 删除编号为1的断点 ``` #### 2. 数据观察与表达式求值 为了方便开发者监控数据变化情况,GDB内置了几种工具帮助实时获取变量或复杂结构体成员的具体数值. - **即时打印** 执行 `print` (可简化成 `p`) 后跟随目标实体名称,能够立即得到它的当前取值状况;值得注意的是它同样适用于方法调用返回的结果展示[^2]. ```bash print x # 输出变量x的内容 print myFunc(5) # 计算myFunc(5),并显示结果 ``` - **持续监视** 如果希望每次停顿时都重新评估某些条件下的动态特性,则应该考虑采用 `display` 功能替代普通的 `print`.一旦激活之后,在每一次进入交互界面之前都将自动呈现关联项的新鲜面貌[^3]. ```bash display y # 自动跟踪y的变化趋势 undisplay 2 # 关闭第二个标记出来的视图窗口 ``` #### 3. 高级扩展能力 除了基础功能外,gdb还允许用户加载外部脚本来自定义行为模式,比如heapcmd.c里封装了一系列针对特殊场景优化过的实用技巧[^1]. 这些新增选项极大地增强了原始版本所能提供的服务范畴,特别是在深入剖析底层资源分配规律方面表现尤为突出. 例如,如果想探索关于堆区布局方面的秘密,可以尝试启用此类插件所提供的特色命令: ```bash source heapcmd.c # 加载自定义模块源码 heap_objects list all # 展示全部活跃对象实例概况 segment show regions # 描述各个分区内存区间分布特征 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值