我是靠谱客的博主 落后老鼠,最近开发中收集的这篇文章主要介绍【linux】什么是栈回溯1 什么是栈帧?2 栈帧结构3 什么是栈回溯?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 什么是栈帧?

(栈帧的定义)“栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。”实际上,可以简单理解为:栈帧就是存储在用户栈上的每一次函数调用所涉及的相关信息的记录单元。

(函数调用的定义)函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。因此栈作用就是用来保持栈帧的活动记录。

(每个栈帧大小相同吗?)栈帧表示程序的函数调用记录,而栈帧又是记录在栈上面,很明显栈上保持了N个栈帧的实体,那就可以说栈帧将栈分割成了N个记录块,但是这些记录块大小不是固定的,因为栈帧不仅保存诸如:函数入参、出参、返回地址和上一个栈帧的栈底指针等信息,还保存了函数内部的自动变量(甚至可以是动态分配内存,alloc函数就可以实现),因此,不是所有的栈帧的大小都相同.

2 栈帧结构

3 什么是栈回溯?

 “栈的回溯”,它是指系统自主打印进程调用栈的行为。从上面描述栈帧的情况可以看出,系统在将栈打印出来的顺序应当是调用的反顺序,它是从esp(低地址)一点一点向高地址回溯,这正是栈帧形成的反过程。因此,我们经常从下到上看函数的调用,不过有些日志系统将导出的回溯信息重新排序,可以从上到下来查看函数调用顺序。

最后

以上就是落后老鼠为你收集整理的【linux】什么是栈回溯1 什么是栈帧?2 栈帧结构3 什么是栈回溯?的全部内容,希望文章能够帮你解决【linux】什么是栈回溯1 什么是栈帧?2 栈帧结构3 什么是栈回溯?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部