GDB 备忘
objdump -d target
反编译target
gdb target
开始调试target
r(run)
运行
b(break) funName
在函数funName处设置断点
b *0x000001
在地址0x000001处设置断点
i(info) b
显示所有断点
i r(register)
显示寄存器
enable id
启用id号断点
disable id
禁用id号断点
delete id
删除id号断点
si(step in)
单步执行
p 0x1234
输出0x1234地址处的内容
p (int*)0x1234
把0x1234地址处的内容作为int型输出
p (char*)0x1234
把0x1234地址处的内容作为char型输出
x/[number][format][length] 0x1234
输出0x1234处的内容,单个长度为length,一共输出number个,输出格式是format
n: 需要显示的内存单元个数,也就是从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义
f:显示格式
x(hex) 按十六进制格式显示变量。
d(decimal) 按十进制格式显示变量。
u(unsigned decimal) 按十进制格式显示无符号整型。
o(octal) 按八进制格式显示变量。
t(binary) 按二进制格式显示变量。
a(address) 按十六进制格式显示变量。
c(char) 按字符格式显示变量。
f(float) 按浮点数格式显示变量
u:每个单元的大小,按字节数来计算。默认是4 bytes。GDB会从指定内存地址开始读取指定字节,并把其当作一个值取出来,并使用格式f来显示
b:1 byte h:2 bytes w:4 bytes g:8 bytes