首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dwarf2中展开堆栈

在dwarf2中展开堆栈
EN

Stack Overflow用户
提问于 2011-03-08 14:20:41
回答 1查看 659关注 0票数 1

我不明白dwarf2中的堆栈展开如何确保在一些非常基本的ABI(应用程序二进制接口)场景中可靠地恢复参数。考虑ABI,它规定前三个参数必须在寄存器上,其余在堆栈上。据我所知,dwarf2堆栈展开机制确保了如果正确填充CFI表,就可以在当前帧的调用点获得寄存器的值。然而,这并不能让您进入caller的前言并知道参数寄存器的内容是什么。因此,我认为应该有一种方法来找到寄存器的值,即使是在同一帧中的不同点(在.debug_frame部分中编码的表只给出了前一帧中的位置)。

我的理解有什么问题吗?在这种情况下,基于dwarf2调试格式的调试器如何工作?对于在堆栈上传递参数的体系结构,在程序中恢复所有点的值(对于任何帧)都不会有任何问题。

EN

回答 1

Stack Overflow用户

发布于 2011-04-07 18:06:24

我想当时我的理解是不正确的。在dwarf2中,堆栈展开的工作方式是使用调用帧信息。这将让调试器创建其中一个先前帧的状态。该帧的位置表达式将使调试器知道参数的位置。

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

https://stackoverflow.com/questions/5229072

复制
相关文章

相似问题

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