使用gdb查看栈帧的情况,有ebp
0x7fffffffdb30: 0x00000000 0x00000000 0xf7ffe700 0x0000001a
0x7fffffffdb40: 0xffffdc98 0x00007fff 0xf7de1b1f 0x00007fff
0x7fffffffdb50: 0xffffdb70 0x00007fff 0x004005b7 0x00000000
0x7fffffffdb60: 0x00000000 0x00000000 0x00000000 0x0000001a <-------funcb的栈帧[0x7ffffffdb60, 0x7fffffffdb80], 其中a=0x1a
0x7fffffffdb70: 0xffffdb90 0x00007fff 0x004005d3 0x00000000 另外0x4005d3是函数调用者返回值ip
0x7fffffffdb80: 0x00400470 0x00000000 0xffffdd90 0x00000019 <------funca的栈帧[0x7fffffffdb80,0x7fffffffdba0],其中a=0x19
0x7fffffffdb90: 0xffffdbc0 0x00007fff 0x00400601 0x00000000 另外0x400601是函数调用这的返回值ip
0x7fffffffdba0: 0x00000000 0x00000000 0x00000028 0x00000018 <------add的栈帧[0x7ffffffdba0,0x7fffffffdbd0],其中a=0x18
0x7fffffffdbb0: 0x00000001 0x00000000 0x00000040 0x00000000
0x7fffffffdbc0: 0xffffdca0 0x00007fff 0x0040068e 0x00000000
0x7fffffffdbd0: 0xffffdd60 0x00007fff 0xf7dee923 0x00000002
0x7fffffffdbe0: 0x00000000 0x00000017 0x00000027 0x00000000
0x7fffffffdbf0: 0x00000000 0x00000000 0x00000003 0x00000000
0x7fffffffdc00: 0xffffdda8 0x00007fff 0x00000000 0x00000000
0x7fffffffdc10: 0x00400740 0x00000000 0xf7de7ab0 0x00007fff
在gdb中的caller of frame表示的是调用这个栈帧的起始地址,rbp也都是在rsp的上面
(gdb) info frame 1
Stack frame at 0x7fffffffdb80: 【栈的基地址】
rip = 0x4005b7 in funcb (sleep.c:15); saved rip = 0x4005d3
called by frame at 0x7fffffffdba0, caller of frame at 0x7fffffffdb60
source language c.
Arglist at 0x7fffffffdb70, args: a=26
Locals at 0x7fffffffdb70, Previous frame's sp is 0x7fffffffdb80
Saved registers:
rbp at 0x7fffffffdb70, rip at 0x7fffffffdb78
从gdb上没看出有没有ebp指针,没啥不同的!
使用gdb查看栈帧的情况,有ebp的更多相关文章
- 使用gdb查看栈帧的情况, 没有ebp
0x7fffffffdb58: 0x004005ba 0x00000000 0x00000000 0x00000000 <-----funcb的栈帧 [0x7fffffffdb60, 0x ...
- 【Linux】GDB查看栈信息(转)
在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性. GDB调试器当然也支持这一特性,但是功能更加灵活和丰富. GDB将当前函数的栈帧编号为0,为外层函数 ...
- X86-64寄存器和栈帧--牛掰降解汇编函数寄存器相关操作
X86-64寄存器和栈帧 概要 说到x86-64,总不免要说说AMD的牛逼,x86-64是x86系列中集大成者,继承了向后兼容的优良传统,最早由AMD公司提出,代号AMD64:正是由于能向后兼容,AM ...
- X86-64寄存器和栈帧
简介 通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果.除此之外,它们还各自具有一些特殊功能.通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途, ...
- Linux 如何使用gdb 查看core堆栈信息
转载:http://blog.csdn.net/mergerly/article/details/41994207 core dump 一般是在segmentation fault(段错误)的情况下产 ...
- Linux下追踪函数调用,打印栈帧
事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况.也就是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在GDB调试里可以追踪调用的 ...
- GDB查看堆栈局部变量
GDB查看堆栈局部变量 “参数从右到左入栈”,“局部变量在栈上分配空间”,听的耳朵都起茧子了.最近做项目涉及C和汇编互相调用,写代码的时候才发现没真正弄明白.自己写了个最简单的函数,用gdb跟踪了调用 ...
- Windows x64 栈帧结构
0x01 前言 Windows 64位下函数调用约定变为了快速调用约定,前4个参数采用rcx.rdx.r8.r9传递,多余的参数从右向左依次使用堆栈传递.本次文章是对于Windows 64位下函数调用 ...
- 2.Jvm 虚拟机栈和栈帧
Jvm 虚拟机栈和栈帧 1.栈帧(frames) 官网描述 A frame is used to store data and partial results, as well as to perfo ...
随机推荐
- 清华大学《C++语言程序设计基础》线上课程笔记04---指针
指针 static int i; static int* ptr = &i; 此处的*表示ptr是指针类型(地址类型),用来存放目标数据的地址 其本身也有地址,所以又指向指针的指针; *前面的 ...
- 成都Uber优步司机奖励政策(4月4日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- serv-u自动停止的解决方法
在主界面serv-u管理控制台-主页--管理服务器----服务器详细信息下,点击“创建,修改并删除服务器事件”找到“事件”右击空白处---“添加”然后如下图所示填写: 点击“保存”就好了,而且我自己也 ...
- Question | 你所遇到的验证码问题可能都在这里了
本文来自网易云社区 "Question"为网易云易盾的问答栏目,将会解答和呈现安全领域大家常见的问题和困惑.如果你有什么疑惑,也欢迎通过邮件(zhangyong02@corp.ne ...
- 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)
题意与分析(Codeforces-431C) 题意是这样的:给出K-Tree--一个无限增长的树,它的每个结点都恰有\(K\)个孩子,每个节点到它\(K\)个孩子的\(K\)条边的权重各为\(1,2, ...
- 关于maven项目中修改的JS不生效的解决方案
1. 问题描述 昨天下午博主在开发学习的过程中,碰到一个修改了JS无法生效的问题,折腾我不少的时间,现将百度到的解决方案总结一下,以便下次碰到类似问题能够最快的找到解决方案 2 解决方案 2.1 方案 ...
- 【system.file】使用说明
对象:system.file 说明:提供一系列针对文件操作的方法. 注意:参数中的filePath 均为相对网站根目录路径 目录: 方法 返回 说明 system.file.exists(filePa ...
- python基本数据类型——元组
元组 元组是一种不可变的序列,创建后不可以修改元素值 # 创建只包含一个元素的元组 >>a = (3,) >>print(a) (3,) #使用 tuple() 转换为元组 & ...
- [Clr via C#读书笔记]Cp8方法
Cp8方法 构造器 作用就是初始化所有成员字段:.ctor:派生类和基类都有自己的构造函数.默认有一个无参数的构造函数,值字段初始化为0,引用字段初始化为null:可以有多个构造器: 值类型的初始化其 ...
- (原创)白话KMP算法详解
引子:BF暴力算法 KMP算法知名度相当高,燃鹅其理解难度以及代码实现对于初学数据结构和算法的同学并不友好,经过两天的总结,详细总结KMP算法如下: 初学串的模式匹配时,我们都会接触到,或者说应该能想 ...