GDB 指令

基础指令

  • 启动程序(然后立刻中断) start

  • 运行程序 run

  • 继续执行程序 continue c

执行

  • 继续执行程序 continue c

  • 单步(进入 call) stepi si

    • 遇到 call 时会 跳进被调用函数里,下一步就是目标函数的第一条指令。

  • 单步(不进入 call) nexti ni

    • 遇到 call 时会 执行完整个调用,再停在下一条指令(相当于把调用当成一条普通指令跳过)。

  • 从当前函数「跑到返回」 finish

断点

  • 设置断点(基于地址) b *0xabc

  • 设置断点 (基于 label) b label

  • 查看所有断点 info breakpoints

  • 删除断点 delete 3

寄存器

  • 查看所有寄存器 info reg

    • 只查看某几个寄存器 info reg rax rbx

  • 打印寄存器的值

    • p/x $rax # 以十六进制打印 rax

    • p/d $rax # 如果你想看十进制

  • 顺着寄存器指针查看内存中的值

    • x/5gx $rax # 看 5 个 8 字节的 qword

    • x/16bx $rax # 按字节看一段原始数据

    • x/s $rax # 按 C 风格字符串看

反汇编

  • 查看某一段的 disassemble $pc, $pc+0x400

  • 查看现在起某几行的 x/200i $pc