gdb使用教程(一)的研究资料
摘要:gdb使用教程(一)的研究资料
Stack frame at //当前栈的起始地址
eip //表示当前的eip寄存器的值,表示的是即将执行的指令的地址
saved eip //表示调用当前指令的指令地址
called by frame at //上一个栈的起始地址
caller of frame at //下一个栈的起始地址
Arglist at //参数列表的地址
Locals at //存放函数局部变量的地址
Previous frame's sp is //上一个栈帧的最后的ESP的值
Saved registers //寄存器的值在栈中的地址
Saved registers保存的是寄存器的
举个例子:
push ebp
mov ebp,esp
压栈的就是这个值,表示的是上个栈帧的ebp。压栈的值在栈中的地址就是ebp at
调用函数之前函数的下一条指令(eip)会被压入堆栈。压栈的值在栈中的地址就是eip at
info reg打印当前寄存器的值
x/1x 地址 以0x形式打印地址中的内容
x/1s 地址 以字符串的形式打印地址中的内容
x/1i 地址 以指令的形式打印地址中的内容
backtrace 打印堆栈
info f 数字 打印指定堆栈的详细信息
list打印源码
disassemble 地址/函数名 打印指定函数的汇编代码
disassemble /m main 上面显示代码,下面显示代码对应的汇编代码
p a 打印a变量的值
set variable a=66 设置a变量的值
编译的时候要用
gcc -g shi1.c -o shi111 一定要带-g选项,不然不能使用list列出源代码
gdb -q shi111 -q不显示gdb版本信息等比较简洁
p system打印函数的地址
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。