examine 命令(简写是 x )来查看内存地址中的值。
x/<n/f/u> <addr>
n 是一个正整数,表示显示内存的长度,从当前地址向后显示几个地址的内容。
f 表示显示的格式,
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字节,g表示八字节。
<addr>表示一个内存地址。
n/f/u三个参数可以一起使用。
x /nfu 0x<addr>:查看内存地址中的值。
f 可取如下值
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。
u表示一个地址单元的长度
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
如:
(gdb) x/16xw 0x7FFFFFFFE0F8
0x7fffffffe0f8: 0x11f71b00 0x5f731990 0x00000000 0x00000000
0x7fffffffe108: 0xf7de30b3 0x00007fff 0xf7ffc620 0x00007fff
0x7fffffffe118: 0xffffe1f8 0x00007fff 0x00000000 0x00000001
0x7fffffffe128: 0x55555198 0x00005555 0x55555210 0x00005555
(gdb) x/16xg 0x7FFFFFFFE0F8
0x7fffffffe0f8: 0x5f73199011f71b00 0x0000000000000000
0x7fffffffe108: 0x00007ffff7de30b3 0x00007ffff7ffc620
0x7fffffffe118: 0x00007fffffffe1f8 0x0000000100000000
0x7fffffffe128: 0x0000555555555198 0x0000555555555210
0x7fffffffe138: 0xffbf095e0e0aea57 0x0000555555555080
0x7fffffffe148: 0x00007fffffffe1f0 0x0000000000000000
0x7fffffffe158: 0x0000000000000000 0x0040f6a1cc2aea57
0x7fffffffe168: 0x0040e6e26ec4ea57 0x0000000000000000
(gdb) x/16xd 0x7FFFFFFFE0F8
0x7fffffffe0f8: 6877869162492271360 0
0x7fffffffe108: 140737351921843 140737354122784
0x7fffffffe118: 140737488347640 4294967296
0x7fffffffe128: 93824992235928 93824992236048
0x7fffffffe138: -18285573919020457 93824992235648
0x7fffffffe148: 140737488347632 0
0x7fffffffe158: 0 18285573285014103
0x7fffffffe168: 18268258704878167 0
(gdb) x/16xh 0x7FFFFFFFE0F8
0x7fffffffe0f8: 0x1b00 0x11f7 0x1990 0x5f73 0x0000 0x0000 0x0000 0x0000
0x7fffffffe108: 0x30b3 0xf7de 0x7fff 0x0000 0xc620 0xf7ff 0x7fff 0x0000
(gdb) x/16xb 0x7FFFFFFFE0F8
0x7fffffffe0f8: 0x00 0x1b 0xf7 0x11 0x90 0x19 0x73 0x5f
0x7fffffffe100: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb) x/xg $rsp
0x7fffffffe0f0: 0x0000000600000006