GDB查看内存命令(x命令)

GDB查看内存命令(x命令)

可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:

x/<n/f/u> <addr>

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

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

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

命令: x/3xh 0x54320  表示从内存地址0x54320读取内容, 
3表示输出三个单位,  x表示按十六进制显示,  h表示以双字节为一个单位.
命令: x/s 0x80497c0  输出起始地址为0x80497c0的以'\0'结尾的字符串
输出格式
一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量的中的位的情况。要做到这样,你可以使用GDB的数据显示格式:

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

(gdb) help x

Examine memory: x/FMT ADDRESS.

ADDRESS is an expression for the memory address to examine.

FMT is a repeat count followed by a format letter and a size letter.

Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),

t(binary), f(float), a(address), i(instruction), c(char) and s(string).

Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).

The specified number of objects of the specified size are printed

according to the format.

Defaults for format and size letters are those previously used.

Default count is 1. Default address is following last thing printed

with this command or "print".



(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 <record>:    12    76    48    62
(gdb) x/6ow 0x8049740
0x8049740 <record>:    014    0114    060    076
0x8049750 <record+16>:    0136    021
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在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、付费专栏及课程。

余额充值