GDB调试汇编堆栈过程分析

GDB调试汇编堆栈过程分析

代码如下:

使用gcc –S –o 20145315.s 20145315.c -m32编译

  • 20145315.s文件如下:

删除gcc产生代码中以"."开头的编译器指令,分析汇编语言

  1. 保存%ebp,并设置新的帧指针

  2. pushl $8分配4字节的栈空间

  3. call调用f,f初始化帧指针,分配栈空间

  4. 在f中第六句call调用g,g被调用,初始化栈指针,分配栈空间,将%eax与立即数15相加,弹栈

  5. 执行ret返回f中call的调用位置

  6. f结束,返回main中call调用的位置

  7. main %eax加15

  8. leave为返回准备栈,相当于%ebp出栈,最后ret结束

使用gdb example指令进入gdb调试器

  • 进入之后先在main函数处设置一个断点,再run一下,使用disassemble指令获取汇编代码

  • 用i(info) r(registers)指令查看各寄存器的值
  • 调试过程如下:


表格如下

posted @ 2016-11-28 21:42  君知らない  阅读(193)  评论(0编辑  收藏  举报