首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆栈帧和堆栈指针

堆栈帧和堆栈指针
EN

Stack Overflow用户
提问于 2015-07-13 11:52:11
回答 1查看 126关注 0票数 0
代码语言:javascript
复制
(gdb) i r esp
esp 0xbffff7a0 0xbffff7a0
(gdb) x/32xw $esp
0xbffff7a0: 0x00000000 0x08049744 0xbffff7b8 0x080482d9
0xbffff7b0: 0xb7f9f729 0xb7fd6ff4 0xbffff7e8 0x00000000
0xbffff7c0: 0xb7fd6ff4 0xbffff880 0xbffff7e8 0xb7fd6ff4
0xbffff7d0: 0xb7ff47b0 0x08048510 0xbffff7e8 0x080484bb
0xbffff7e0: 0xbffff9b7 0x08048510 0xbffff848 0xb7eafebc
0xbffff7f0: 0x00000002 0xbffff874 0xbffff880 0xb8001898
0xbffff800: 0x00000000 0x00000001 0x00000001 0x00000000
0xbffff810: 0xb7fd6ff4 0xb8000ce0 0x00000000 0xbffff848
(gdb) p 0xbffff7e0 - 0xbffff7a0
$1 = 64
(gdb) x/s password_buffer
0xbffff7c0: "?o??\200????????o???G??\020\205\004\b?????\204\004\b????\020\205\004\bH???????\002"
(gdb) x/x &auth_flag
0xbffff7bc: 0x00000000

我想详细了解我们如何知道0xbffff7c0 (password_buffer)位于堆栈框架中的0xb7fd6ff4 (第三行第二列),以及我们如何知道0xbffff7bc (auth_flag)位于堆栈框架中的0x00000000 (第二行第五列)。

password_bufferauth_flag值存储在哪里?它们是否存储在堆栈帧中?

代码语言:javascript
复制
char password_buffer[16];  
int auth_flag = 0;
EN

回答 1

Stack Overflow用户

发布于 2015-07-13 15:22:18

是的,他们是。局部变量是函数stack frame的一部分。

关于GDB中堆栈上的语句:

最左边的一列描述地址,而其他列保存这些地址的值(+ offset)。因此,password_buffer不是“位于”0xb7fd6ff4,而是在索引0处包含0xf4,在索引1处包含0x6f,依此类推(相反,因为gdb以低字节顺序显示值)。类似地,auth_flag的值是0x00000000

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

https://stackoverflow.com/questions/31375171

复制
相关文章

相似问题

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