linux gdb 查看内存

GDB查看内存命令(x命令)
可以使用examine命令(简写是x)来查看内存地址中的值。

x命令的语法如下所示:

x/nfu

n、f、u是可选的参数。


n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。


表示一个内存地址。
n/f/u三个参数可以一起使用。例如:


命令:x/3uh 0x54320 表示,从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示输出三个单位,u表示按十六进制显示。


输出格式
一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量的中的位的情况。要做到这样,你可以使用GDB的数据显示格式:


x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。


(gdb) p record
$10 = {12, 76, 48, 62, 94, 17, 32, 37, 52, 69}
(gdb) p &record
$11 = (int (*)[10]) 0x8049740
(gdb) x/4uw 0x8049740
0x8049740 :    12    76    48    62
(gdb) x/6ow 0x8049740
0x8049740 :    014    0114    060    076
0x8049750 :    0136    021

Linux中使用gdb进行内存查看可以使用gdb的x命令。x命令可以查看指定内存地址的值。 下面是x命令的语法: ``` x/[n][f][s][u] address ``` 其中,n、f、s、u都是可选参数,含义如下: - n:表示要查看内存单元的数量,以16进制表示,默认为1个。 - f:表示要查看内存单元的格式,包括以下几种: - x:以16进制格式显示。 - d:以10进制格式显示。 - u:以无符号10进制格式显示。 - o:以8进制格式显示。 - t:以二进制格式显示。 - a:以地址格式显示。 - c:以字符格式显示。 - f:以浮点数格式显示。 - s:表示要查看内存单元的大小,包括以下几种: - b:表示查看一个字节(8位)。 - h:表示查看两个字节(16位)。 - w:表示查看四个字节(32位)。 - g:表示查看八个字节(64位)。 - u:表示要查看内存单元是否为无符号数,如果不加这个选项,则默认为有符号数。 下面是一些常用的x命令示例: 1. 查看一个字节: ``` x/1xb address ``` 2. 查看两个字节: ``` x/1xh address ``` 3. 查看四个字节: ``` x/1xw address ``` 4. 查看八个字节: ``` x/1xg address ``` 其中,address是要查看内存地址,可以是十进制或十六进制格式。例如: ``` x/1xb 0x1000 // 查看0x1000地址上的一个字节 x/1xh 0x1000 // 查看0x1000地址上的两个字节 x/1xw 0x1000 // 查看0x1000地址上的四个字节 x/1xg 0x1000 // 查看0x1000地址上的八个字节 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值