zoukankan      html  css  js  c++  java
  • 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)指令查看各寄存器的值
    • 调试过程如下:


    表格如下

  • 相关阅读:
    php目录递归删除
    php嵌套数据
    HTML 标签
    枚举 递归
    传值传址 结构体
    去超市选择要购买的商品 将数组放入集合
    函数
    集合 ArrayList 类
    特殊集合 Stack Queue Hashtable
    二维数组,多维数组
  • 原文地址:https://www.cnblogs.com/5315hejialei/p/6111507.html
Copyright © 2011-2022 走看看