- 寄存器:
r8-r15:
指R8B-R15B的8位寄存器,R8W-R15W的16位寄存器,或者R8D-R15D的32位寄存器,或者R8-R15的64位寄存器。
- 启动程序,在run后面带上程序的启动参数可以传递给正在调试的程序
(gdb) run [参数1] [参数2] ...
- 打印寄存器的值
(gdb) p/x
$xmm3 (print/x, 十六进制打印寄存器xmm3的值)
v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x11,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0x9d}
xmm 寄存器低位在前,高位在后 (0-127)
v16_int8 = {0x0, 0x1, 0x0
times>} 0x0100
v16_int8 = {0x0, 0x0, 0x1, 0x0
times>} 0x010000
- 打印所有寄存器
(gdb) i reg
- 打印数组
如果 char buff[] =
{
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
movdqa (%rdi),
%xmm1 # xmm1 = buff
(gdb) p/x $xmm1
v16_int8 = {0x0, 0x0, 0x2, 0x0
times>}
- 可以用下面的指令转换字节顺序:
.SHUF_MASK:
.octa
0x000102030405060708090A0B0C0D0E0F
pshufb .SHUF_MASK, %xmm1
(gdb) p/x $xmm1
v16_int8 = {0x0
times>, 0x1, 0x0}
- 打印寄存器rdi所指地址的值
(gdb) x [/16x(/32x...)] $rdi
32x表示以16进制打印32个字节
- 打印寄存器rdi所指地址低16字节处的值
(gdb) x/16x $rdi - 16
- 查看内存x/nfu addr, n:重复次数, f:格式, u:内存单位
打印一个字节,格式用缺省的x(16进制), 内存单位为b(字节),
指定内存单位同时也改变了缺省内存单位,以后可以不用再指定
(gdb) x/b 0x7fffffffde30
0x7fffffffde30: 0x00
- 在文件filename的第linenum行设置断点
(gdb) b filename:linenum
- 在指定内存地址设置断点
(gdb) b *0x0000000000400617
- 设置函数断点
(gdb) b _ZN4bstn5crc10EPhm
Breakpoint 1 at 0x51c020
- 查看当前帧PC附近汇编代码
(gdb) disassemble
0x0000000000485111
: callq 0x51bc1c
=> 0x0000000000485116
: mov %ax,0x50(%rbx)
0x000000000048511a
: add $0x8,%rsp
0x000000000048511e
: pop %rbx
0x000000000048511f
: pop %rbp
0x0000000000485120
: retq
- 查看指定地址(函数名)附近的汇编代码
(gdb) disassemble 0x51bc1c
Dump of assembler code for function _ZN4bstn5crc10EPhm:
0x000000000051bc1c
: push %rbp
0x000000000051bc1d
: mov %rsp,%rbp
0x000000000051bc20
: sub $0x10,%rsp
0x000000000051bc24
: mov %rdi,-0x8(%rbp)
0x000000000051bc28
: mov %rsi,-0x10(%rbp)
0x000000000051bc2c
: mov -0x10(%rbp),%rsi
0x000000000051bc30
: mov -0x8(%rbp),%rdi
0x000000000051bc34
: callq 0x51bc3c
0x000000000051bc39
: leaveq
0x000000000051bc3a
: retq End of assembler dump.
- 查看寄存器
(gdb) info registers (info r)
rax 0x364 868
rbx 0x80117102000000 36047974081495040
rcx 0x6000000000000000 6917529027641081856
rdx 0x28 40
rsi 0x364 868
rdi 0x7f1ba03a1dd4 139756629007828
rbp 0x910098 0x910098
rsp 0x7f1b44ff0950 0x7f1b44ff0950
r8 0x1 1
r9 0x462f3c0a3e656c69 5057326921254530153
r10 0x6174736e492d5444 7022364636488750148
r11 0x24 36
r12 0x0 0
r13 0x7f1b8803a52d 139756222784813
r14 0x485090 4739216
r15 0x245 581
rip 0x485116 0x485116
<:syncudpflutepacket::generateheader>
const&)+134>
eflags