• 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)指令查看各寄存器的值
    • 调试过程如下:


    表格如下

  • 相关阅读:
    最大公约数与最小公倍数
    素数筛
    基础数学问题
    考试前打模板
    斐波那契公约数
    期望及期望dp
    状压dp总结
    树链剖分学习
    B君的教育
    [noip2016]愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/5315hejialei/p/6111507.html
Copyright © 2020-2023  润新知