提问人:Fee 提问时间:5/8/2023 最后编辑:Fee 更新时间:5/9/2023 访问量:392
.eh_frame 与 .debug_frame 部分?
.eh_frame vs .debug_frame section?
问:
该部分似乎包含堆栈展开信息,并由矮人标准定义。.debug_frame
该部分似乎基本上包含相同的信息,但有一些细微的差异,并且由 linux 基金会定义.eh_frame
为什么同一件事有两个非常相似的标准?
什么时候使用一个部分而不是另一个部分?
答:
3赞
Employed Russian
5/9/2023
#1
该部分似乎基本上包含相同的信息
.eh_frame
例外是正常工作所必需的。它必须包含足够的信息,以便从所有可能引发异常的地方展开,但不必包含除此以外的任何内容。例如,它不需要包含通过函数序言或尾声展开所需的信息,因为那里不会提出任何异常。.eh_frame
(和其他部分)仅用于调试(以及“自我感知”程序,这些程序在崩溃时会展开自己的堆栈)。它应该包含足够的信息,以便调试器从程序中的任意位置展开堆栈,尽管在实践中它可能不是(例如,LLVM 目前没有发出函数尾声的准确信息)。.debug_frame
.debug_*
评论