在gdb中查看指定内存地址的内容
调试 C/C++ 程序时,需要打印指定内存地址的内容。我最近调试程序中的序列化模块时,需要将类对象按照指定的格式转化为二进制流,为了验证转化结果,在调试时就需要将指定内存地址中的内容打印出来。
指令语法
在gdb模式下,使用 x
( examine
的缩写)指令能够将指令内存地址中的信息打印出来。指令的语法如下。
x/nfu addr
x addr
其中 n
、 f
、 u
都是可选参数, n
表示重复次数, f
表示显示格式(format), u
表示显示单元大小(unix size)。
f
可以取如下值 :
x 按十六进制格式显示变量
d 按十进制格式显示变量
o 按八进制格式显示变量
t 按二进制格式显示变量
u
可以取如下值 :
b 表示单字节(byte)
h 表示双字节(halfword)
w 表示四字节(word)
g 表示八字节(giant word)
示例
以下指令会以16进制格式显示addr开始的100字节信息
(gdb) x/100xb addr