[发明专利]一种堆栈回溯的方法及装置有效
申请号: | 201710398429.4 | 申请日: | 2017-05-31 |
公开(公告)号: | CN108984328B | 公开(公告)日: | 2021-08-17 |
发明(设计)人: | 杨洲;唐玉科 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/36 |
代理公司: | 深圳市力道知识产权代理事务所(普通合伙) 44507 | 代理人: | 张传义 |
地址: | 518057 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 堆栈 回溯 方法 装置 | ||
1.一种堆栈回溯的方法,包括:
获取当前FP-4位置处的内存值;
根据所述内存值确定当前函数使用的栈帧结构类型,其中,所述栈帧结构类型包括:ARM的第一栈帧结构,ARM的第二栈帧结构,ARM的第三栈帧结构;
根据所述栈帧结构类型,获取返回地址和父函数帧指针FP;
其中,所述当前FP-4为当前函数FP的值往低地址方向移动4个字节处的内存地址。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存值确定当前函数使用的栈帧结构类型,包括:
在所述内存值在程序代码段范围内时,确定当前函数使用第一栈帧结构;
在所述内存值在当前线程堆栈范围内时,确定当前函数使用第二栈帧结构;
在所述内存值既不在程序代码段范围内、也不在当前线程堆栈范围内时,确定当前函数使用第三栈帧结构。
3.根据权利要求1或2所述的方法,其特征在于,根据所述栈帧结构类型,获取返回地址和父函数帧指针FP,包括:
在所述栈帧结构类型为第一栈帧结构的情况下,从FP-4对应的内存处读取返回地址,从FP-12对应的内存处读取父函数的FP;
对于第二栈帧结构,从FP对应的内存处读取返回地址,从FP-4对应的内存处读取父函数的FP;
对于第三栈帧结构,获取当前函数堆栈大小SIZE,从FP+SIZE处读取父函数的FP,从FP+SIZE+4处读取返回地址。
4.根据权利要求3所述的方法,其特征在于,所述获取本函数堆栈大小SIZE,包括:
从当前PC往低地址方向进行指令分析,查找扩展堆栈的指令;
在查找到扩展堆栈的指令的情况下,本函数堆栈大小SIZE为所述指令中的立即数;
如果没有查找到扩展堆栈的指令,则本函数堆栈大小SIZE为0。
5.一种堆栈回溯的装置,包括:
获取模块,用于获取当前FP-4位置处的内存值;
确定模块,用于根据当前FP-4位置处的内存值,确定当前函数使用的栈帧结构类型,其中,所述栈帧结构类型包括:ARM的第一栈帧结构,ARM的第二栈帧结构,ARM的第三栈帧结构;
返回模块,用于根据所述栈帧结构类型,获取返回地址和父函数帧指针FP;
其中,所述当前FP-4为当前函数FP的值往低地址方向移动4个字节处的内存地址。
6.根据权利要求5所述的装置,其特征在于,
所述确定模块,具体用于:在所述内存值在程序代码段范围内时,确定当前函数使用第一栈帧结构;在所述内存值在当前线程堆栈范围内时,确定当前函数使用第二栈帧结构;在所述内存值既不在程序代码段范围内、也不在当前线程堆栈范围内时,确定当前函数使用第三栈帧结构。
7.根据权利要求5或6所述的装置,其特征在于,
所述返回模块,具体用于:对于第一栈帧结构,从FP-4对应的内存处读取返回地址,从FP-12对应的内存处读取父函数的FP;对于第二栈帧结构,从FP对应的内存处读取返回地址,从FP-4对应的内存处读取父函数的FP;对于第三栈帧结构,先计算当前函数堆栈大小SIZE,再从FP+SIZE处读取父函数的FP,从FP+SIZE+4处读取返回地址。
8.一种堆栈回溯的装置,其特征在于,包括:
存储有堆栈回溯程序的存储器;
处理器,配置为执行所述堆栈回溯程序以执行下述操作:获取当前FP-4位置处的内存值;根据当前FP-4位置处的内存值,确定当前函数使用的栈帧结构类型,其中,所述栈帧结构类型包括:ARM的第一栈帧结构,ARM的第二栈帧结构,ARM的第三栈帧结构;根据所述栈帧结构类型获取返回地址和父函数帧指针FP;其中,所述当前FP-4为当前函数FP的值往低地址方向移动4个字节处的内存地址。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有堆栈回溯程序,所述堆栈回溯程序被处理器执行时实现如权利要求1至4中任一项所述堆栈回溯方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710398429.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:报文转发方法、多核CPU及网络设备
- 下一篇:延迟错误处理