博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GDB调试汇编堆栈过程分析
阅读量:5030 次
发布时间:2019-06-12

本文共 468 字,大约阅读时间需要 1 分钟。

GDB调试汇编堆栈过程分析

代码如下:

886825-20161128214126818-1857168372.png

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

  • 20145315.s文件如下:
    886825-20161128214154834-29567840.png

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

886825-20161128214203756-1447753855.png

  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指令获取汇编代码

886825-20161206212033179-582657521.png

  • 用i(info) r(registers)指令查看各寄存器的值
    886825-20161206212515757-1995476451.png
  • 调试过程如下:
    886825-20161206224759616-2093428462.png
    886825-20161206224815022-615209100.png
    886825-20161206224829085-255442946.png

886825-20161206224839882-1243348774.png

886825-20161206224845179-414110962.png

886825-20161206224849960-1655829879.png

表格如下

886825-20161206224856101-737484710.png

转载于:https://www.cnblogs.com/5315hejialei/p/6111507.html

你可能感兴趣的文章
字符串按照字典序排列
查看>>
IOS 开发调用打电话,发短信
查看>>
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
样式、格式布局
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>