gdb 的常用

看内存

x/<n/f/u>
n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果 地址是指令地址,那么格式可以是i。
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。

u 参数可以用下面的字符来代替

b 表示单字节,
h 表示双字节,
w 表示四字节,
g 表示八字节。

当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

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

u 可以替换成:

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

h 可以替换成:

b 表示单字节,
h 表示双字节,
w 表示四字节,
g 表示八字节


virtual 虚函数表

1
2
3
4
5
6
(gdb) set $i = 0
(gdb) while $i < 10
print $i
p /a (*(void ***)pSession)[$i]
set $i = $i + 1
end

gdb 系统catch

1
(gdb) catch throw out_of_range
------ 本文结束 ------
------ 版权声明:转载请注明出处 ------