指令

misc

disas (函数名) #在gdb里反汇编某函数,查看某句指令的地址,好下断点

vm(virtual memory)

at [进程id] #连接到目标进程调试

b (num) #在num行下断点,或者加一个地址,在目标地址下断点

r #重新运行文件

start #单步执行,运行程序,停在第一执行语句

next或n #单步调试(逐过程,不进入函数)

step或s #单步调试(逐语句,会进入函数)

finish #跑完这个函数

c #继续运行到下一断点

bt #查看函数的调用栈帧和层级关系

set 目标变量名($寄存器名) = 值

p 目标变量名( $寄存器名) #查看目标变量

info registers #查看所有寄存器

heapinfo #查看heap的状态


x命令

格式:x/<n/f/u> < addr>

n:是正整数,表示需要显示的内存单元的个数,即从当前地址向后显示n个内存单元的内容,一个内存单元的大小由第三个参数u定义。

f:表示addr指向的内存内容的输出格式,此处需特别注意输出整型数据的格式:

s 对应输出字符串变量。

x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十六进制格式显示无符号整型。

o 按八进制格式显示变量。

t 按二进制格式显示变量。

a 按十六进制格式显示变量。

c 按字符格式显示变量。

f 按浮点数格式显示变量。

(i 应该是按汇编语言显示)

u:就是指以多少个字节作为一个内存单元-unit,默认为4。当然u还可以用被一些字符表示,如

b=1 byte, h=2 bytes, w=4 bytes, g=8 bytes.


多窗口

layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
layout src:显示源代码窗口
layout asm:显示汇编窗口
layout regs:显示源代码/汇编和寄存器窗口
layout split:显示源代码和汇编窗口
layout next:显示下一个layout
layout prev:显示上一个layout
Ctrl + L:刷新窗口
Ctrl + x,再按1:单窗口模式,显示一个窗口
Ctrl + x,再按2:双窗口模式,显示两个窗口
Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。