[发明专利]函数调用栈解析和回溯方法与装置有效
| 申请号: | 202211187959.1 | 申请日: | 2022-09-28 |
| 公开(公告)号: | CN115292201B | 公开(公告)日: | 2022-12-20 |
| 发明(设计)人: | 张鹏;方建滨;黄春;彭林;唐滔;崔英博 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/53;G06F8/70 |
| 代理公司: | 长沙国科天河知识产权代理有限公司 43225 | 代理人: | 李杨 |
| 地址: | 410073 湖*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 函数 调用 解析 回溯 方法 装置 | ||
本申请涉及一种函数调用栈解析和回溯方法及装置,所述方法包括:通过转储异常中断或者手动中断应用程序的执行现场,并根据中断应用程序中终止函数正在执行的代码地址在可执行文件中找到所述终止函数的函数代码,并对处理后的函数代码进行分析后重构终止函数的栈桢结构,并根据该栈桢结构对执行现场重的栈空间进行解析得到返回地址以及上一层函数的栈地址,采用同样方式重构返回地址对应的上一层函数的栈桢结构并对转储的栈空间进行解析,对调用栈中的每个函数进行栈桢结构重构与解析,直到无法得到有效返回地址或栈地址,即完成调用栈回溯,采用本方法可以智能识别栈桢结构,能够在无需进行额外处理的情况下,高效、准确地获取完整的函数调用栈。
技术领域
本申请涉及计算机技术领域,特别是涉及一种函数调用栈解析和回溯方法与装置。
背景技术
应用程序在实际运行过程中,会存在出现硬件或软件异常的可能性,导致程序终止执行,此时需要程序的调用栈信息,来定位程序出现异常的位置。
对于目前函数调用栈回溯技术,要么需要函数带有栈桢结构信息,要么需要限制编译器优化,要么对栈中的数据进行猜测是否为函数返回地址等,存在分析不精确、需要额外处理等限制。
由于程序出现异常的不确定性,用户没有提前进行额外处理,导致信息缺失,难以恢复函数调用栈信息。
因此,需要一种能够智能识别栈桢结构,在无需进行额外处理的情况下,高效、准确地获取完整的函数调用栈的方法。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在无需进行额外处理的情况下,高效、准确地获取完整的函数调用栈的方法。
一种函数调用栈解析和回溯方法,所述方法包括:
转储异常中断或者手动中断应用程序的执行现场,所述应用程序的执行现场包括:栈空间以及多个处理器寄存器,其中,所述处理器寄存器包括分别有程序计数寄存器和栈顶寄存器,所述程序计数寄存器中保存有当前中断应用程序中终止函数正在执行的代码地址,所述栈顶寄存器保存的是当前中断应用程序中终止函数的栈顶地址;
根据所述终止函数正在执行的代码地址在所述应用程序的可执行文件中找到所述终止函数的函数代码,并对其进行静态代码分析后重构所述终止函数的栈桢结构;
根据所述终止函数的栈桢结构对转储的所述栈空间进行解析,得到所述终止函数的返回地址以及父函数栈顶地址;
所述返回地址为调用所述终止函数的函数地址,根据所述返回地址得到对应函数的函数代码,采用同样方式重构栈桢结构并对转储的栈空间进行解析;重复此操作,直到无法得到有效返回地址或栈顶地址,即完成调用栈回溯。
在其中一实施例中,所述栈桢结构包括:开栈大小、函数输入参数的相对栈顶或栈底位置的偏移量、以及返回地址的相对栈顶或栈底位置的偏移量。
在其中一实施例中,根据所述函数的函数代码进行静态分析后重构所述函数的栈桢结构包括:
根据程序可执行文件进行反汇编,得到所述函数的汇编指令;
从函数入口开始,对所述函数的汇编指令进行扫描,识别其中所有修改栈顶寄存器的指令,并通过踪栈顶位置的变化以得到所述开栈大小;
根据所有修改栈顶寄存器的指令,识别其中所述函数输入参数以及返回地址的进出栈操作,并得到所述函数输入参数以及返回地址分别在栈中相对于栈顶或栈底的偏移量。
在其中一实施例中,所述所有修改栈顶寄存器的指令包括:专用进出栈指令,以栈顶寄存器为目的寄存器的MOV指令以及运算指令,以栈顶寄存器为基址寄存器的自增或自减访存指令。
在其中一实施例中,跟踪栈顶位置的变化以得到所述开栈大小包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211187959.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:船舶五金配件用防锈装置
- 下一篇:精细化种植用滴灌阀





