[发明专利]面向容量受限的程序栈空间深度追溯方法有效
| 申请号: | 201910794946.2 | 申请日: | 2019-08-27 |
| 公开(公告)号: | CN112445482B | 公开(公告)日: | 2022-11-15 |
| 发明(设计)人: | 肖谦;王飞;尉红梅;沈莉;钱宏;管茂林;朱琪;周文浩 | 申请(专利权)人: | 无锡江南计算技术研究所 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 苏州创元专利商标事务所有限公司 32103 | 代理人: | 王健 |
| 地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 面向 容量 受限 程序 空间 深度 追溯 方法 | ||
本发明公开一种面向容量受限的程序栈空间深度追溯方法,包括以下步骤:S1、在链接器中建立函数信息的数据结构,形成函数调用关系流程图;S2、获取所有的函数符号信息,建立相应的函数信息数据结构,并将函数的名称、PC值范围、自身栈空间深度信息安装到对应的函数信息结构中;S3、遍历程序所有的重定位信息,根据重定位信息来确定函数调用关系,根据分析结果更新各个函数信息的链表指针;S4、对建立的函数调用关系图做深度优先遍历,通过累加计算获取根节点函数的栈空间深度,对所有根节点栈空间深度做排序后输出。本发明通过静态分析的方法获取栈空间信息,无需重新编译,无需运行插桩,对于程序分析、错误定位以及程序优化有着很好的指导作用。
技术领域
本发明涉及一种面向容量受限的程序栈空间深度追溯方法,属于计算机技术领域。
背景技术
对于一些容量受限的精简处理器核心,函数栈空间深度是影响程序性能的关键。由于栈空间是程序运行过程中动态申请使用,其实际大小难以预估。目前计算程序栈空间深度的方法,一般是编译时在每个函数开始插桩记录栈指针的统计函数,程序运行过程中记录下栈指针在函数调用流程中的值的变化,从而通过计算初始栈指针与栈指针值为最小时的差值来获取程序运行过程中的最大栈空间深度。
现有的栈空间深度计算方法存在着如下缺陷:一是程序需要重新编译进行插桩,对于遗产代码适应性差,且需要预先运行一遍获取栈空间深度,比较麻烦;二是在容量受限的情况下,经常遇到的情况是栈空间不足,在这种情况下,程序会因为栈空间溢出而无法正常执行,也就无法获取正确的栈空间深度了;三是这种技术只能获取程序运行过程中实际发生的调用关系流程图,而无法获取全部的函数调用关系图,因为有些函数调用可能在实际运行中并没有执行。
发明内容
本发明的目的是提供一种面向容量受限的程序栈空间深度追溯方法,该面向容量受限的程序栈空间深度追溯方法通过静态分析的方法获取栈空间信息,无需重新编译,无需运行插桩,对于程序分析、错误定位以及程序优化有着很好的指导作用。
为达到上述目的,本发明采用的技术方案是:一种面向容量受限的程序栈空间深度追溯方法,包括以下步骤:
S1、链接器获取所有的函数符号信息,建立相应的函数信息数据结构,各个函数之间通过链表形成函数调用关系流程图;
S2、将函数的名称、PC值范围、自身栈空间深度信息安装到S1中建立的函数信息结构中,其中自身栈空间深度通过解析函数对应的eh_frame段,根据各个函数的PC值范围做检索,定位到对应的FDE记录(Frame Description Entry)从而获取各个函数本身所占用的栈空间大小;
S3、遍历程序所有的重定位信息,根据重定位信息来确定函数调用关系,根据分析结果更新各个函数信息的链表指针,同时更新函数调用关系流程图,每个函数链接的其他函数即为该函数的调用者,对于函数链表指针指向自己的递归函数,不列入分析范围;
S4、对建立的函数调用关系图做深度优先遍历,通过累加计算获取根节点函数的栈空间深度。
上述技术方案中进一步改进的方案如下:
1. 上述方案中,还可以对所有根节点栈空间深度做排序后输出,在链接器的map文件中输出每个函数调用的其他函数,用于辅助用户分析程序的信息。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向容量受限的程序栈空间深度追溯方法,其通过重定位信息建立函数调用关系图,通过对eh_frame段的解析获取各个函数自身的栈深度,结合函数调用关系图,计算图中根节点函数的最大栈空间深度,充分利用了链接分析信息,比直接分析汇编代码更为准确有效,通过静态分析的方法获取栈空间信息,无需重新编译,无需运行插桩,对于程序分析、错误定位以及程序优化有着很好的指导作用。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910794946.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:低功耗的寄存器分配编译优化方法
- 下一篇:电连接器及其组合





