首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在GDB中,"frame at“的值与ebp($fp)寄存器的值不同?

为什么在GDB中,"frame at“的值与ebp($fp)寄存器的值不同?
EN

Stack Overflow用户
提问于 2018-09-23 08:39:45
回答 1查看 92关注 0票数 4

我试图通过查看GDB中的栈帧信息来理解基本的汇编语言。我试着找出当一个函数被main函数调用时发生了什么。

但我发现"info frame“中的"frame at”的值与"info reg“中的ebp寄存器的值不同。按照惯例,这两个值不应该都指示堆栈帧的起始点并且是相同的吗?

代码语言:javascript
复制
(gdb) info frame
Stack level 0, frame at 0xffffced8:
...
(gdb) info reg
esp            0xffffcec0   0xffffcec0
ebp            0xffffced0   0xffffced0

我猜是因为从0xffffced8到0xffffced0的地址用来存储数据,比如返回地址和输入参数?我如何验证我的想法?

EN

回答 1

Stack Overflow用户

发布于 2018-09-23 09:27:39

GDB将帧地址定义为“属于帧的最后一个字之后的内存位置的地址”。http://visualgdb.com/gdbreference/commands/info_frame

(这可能是特定于架构的。ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_chapter/gdb_7.html)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52462014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档