[发明专利]调用栈的解析处理方法及装置有效
申请号: | 201210504505.2 | 申请日: | 2012-11-30 |
公开(公告)号: | CN103019707A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 雷镇 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F11/36 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 刘芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 调用 解析 处理 方法 装置 | ||
技术领域
本发明实施例涉及调用栈解析技术,尤其涉及一种调用栈的解析处理方法及装置。
背景技术
通常在对软件调试时,需要查看当前函数的调用栈,也就是一个体现函数调用关系的函数调用链,比如,函数f1调用函数f2,函数f2调用函数f3,则f1→f2→f3就是一个调用栈。具体地,一个函数到另一个函数之间可能存在多种调用情况,例如,函数f1到函数f3的调用栈可以是f1→f2→f3,也可以是f1→f4→f5→f3,因此,当程序出现异常、检测到错误或被断点断住时,需要查看当前函数的当前调用栈。
现有技术中,查看当前函数的调用栈的常用方式有X86调用栈解析方式,这种方式中,由硬件约定扩展基指针寄存器(Extended Base Pointer,EBP)与返回地址(Return Address,RA)相邻存放,当前EBP指向的位置保存上一层的EBP信息,且当前EBP地址加4的位置保存上一层的RA,因此,如果得到当前EBP的值,便可查找到上一层的EBP,依此类推,最终获取所有RA,再从汇编指令中得到RA对应的函数信息,最后得到调用栈。
发明人在实现本发明实施例的过程中发现,采用现有技术中解析调用栈的方式,必须硬件或编译器支持,否则不可用;而且如果程序中的当前调用栈被破坏或者缺失寄存器现场,将无法得到调用栈。
发明内容
本发明实施例提供一种调用栈的解析处理方法及装置,用以解决当调用栈中缺失寄存器现场或被破坏时无法得到该调用栈的问题。
本发明实施例第一方面提供一种调用栈的解析处理方法,包括:
在将栈的起始地址按预设字节数对齐后,按照所述预设字节数进行逐层搜索,若通过判断获知当前位置的搜索值是一个有效的返回地址值,则获取所述有效的返回地址值以及当前位置的栈指针;
获取每一个有效的返回地址值的所属函数,扫描所述所属函数的汇编指令,获得所述返回地址值所在层的本层开栈大小以及在本层中的存储偏移,所述本层开栈大小为所述所属函数的入口到所述当前位置的开栈大小;
根据每一个有效的返回地址值对应的栈指针、本层开栈大小和存储偏移,将各个所述返回地址值进行串接,获得至少一个候选调用栈;
根据预设的筛选规则,在所述至少一个候选调用栈中筛选出目标调用栈。
结合第一方面的第一种实现方式中,判断当前位置的搜索值是否是一个有效的返回地址值的步骤包括:
对每一个预设字节数的栈值依次进行是否位于代码段、是否位于函数体、是否满足指令对齐要求、是否临近区域存在函数调用指令的判断,若均满足,则获知当前位置的搜索值是一个有效的返回地址值。
结合第一方面的第二种实现方式中,所述根据每一个有效的返回地址值对应的栈指针、本层开栈大小和存储偏移,将各个所述返回地址值进行串接包括:
若任意两个有效的返回地址值对应的栈指针、本层开栈大小和存储偏移,满足连接规则,则将两个有效的返回地址值进行串接;
所述连接规则包括但不限于:若SPi-OFFSETi+SIZEi=SPk-OFFSETk;或,SPi+OFFSETi+SIZEi=SPk,则RAk的所属函数为RAi的所属函数的父函数;
其中,任意两个有效的返回地址值分别记为RAi和RAk,且i<k;RAi和RAk的栈指针分别为SPi和SPk,存储偏移分别为OFFSETi和OFFSETk,对应的本层开栈大小为SIZEi和SIZEk。
结合第一方面或第一方面的第一种实现方式或第一方面的第二种实现方式的第三种实现方式中,所述预设的筛选规则包括:
排除孤立的有效的返回地址值;
最后一个有效的返回地址值的所属函数为相同的入口函数的多个候选调用栈中,排除包括结点数量少的候选调用栈;
排除最后一个有效的返回地址值的所属函数不为入口函数的候选调用栈。
本发明实施例第二方面提供一种调用栈的解析处理装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210504505.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种自洁活性炭吸附塔
- 下一篇:废气吸收处理装置