- disassemble //gdb下使用可以查看汇编代码
disassemble /m 函数名 /m 源码和汇编一起排列
disassemble 不带参数,默认的反汇编范围是 所选择帧的pc附近的函数
单个参数, 就是pc, 当然也可以是函数名,因为函数名 也是一个 地址;
这样范围就是该pc附近的函数
两个参数,就是内存地址范围 - 使用display /i $pc(结合display命令和寄存器/pc内部变量)指令进行设置
- info register查看寄存器的情况,可以简写成i r
主要是%eip、%eax、%esp和%ebp
列出的结果主要有三行
最左边是寄存器名称外,中间是寄存器存的值(也就是一个内存地址),右边是这个值对应的内存
地址中的值。打印一下$eax可验证 - si,ni:
下一条语句遇到函数调用的时候,nexti不会跟踪进入函数,而是继续执行下面的语句,
而step命令则会跟踪进入函数内部。
si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指
令,而s/n针对的是源代码。 - i代表指令(instruction)
n(ext)i
s(tep)i - $pc 代表pc程序计数器的值
- set disassembly-flavor intel gdb设置intel汇编 ,默认是att
- print其实是有计数器的,每次print打印,其实都有一个类似count