[发明专利]函数调用栈回溯、程序异常处理方法、装置、设备及介质有效
申请号: | 202110736647.0 | 申请日: | 2021-06-29 |
公开(公告)号: | CN113342431B | 公开(公告)日: | 2023-02-07 |
发明(设计)人: | 赵欣;张琰;伍晓宇;黄家辉 | 申请(专利权)人: | 苏州科达科技股份有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F11/07 |
代理公司: | 上海隆天律师事务所 31282 | 代理人: | 潘一诺 |
地址: | 215011 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 函数 调用 回溯 程序 异常 处理 方法 装置 设备 介质 | ||
1.一种函数调用栈回溯方法,其特征在于,包括:
获取程序异常时的异常栈数据段;
自所述异常栈数据段,依次提取数据,并对每一数据执行:
判断该数据是否为地址信息;
若是,则根据该数据以及一函数映射表,查找所述地址信息对应的函数名;
按所述数据的提取顺序以及所查找的函数名,回溯获得第一函数调用顺序;
至少根据所述第一函数调用顺序,获得函数调用栈。
2.如权利要求1所述的函数调用栈回溯方法,其特征在于,所述判断该数据是否为地址信息包括:
判断所述数据是否落入进程空间的代码段地址空间;
若是,则所述数据为地址信息;
若否,则所述数据不是地址信息。
3.如权利要求1所述的函数调用栈回溯方法,其特征在于,所述根据所述第一函数调用顺序,获得函数调用栈之前,还包括:
利用处理器的函数调用规范调用函数调用栈的栈帧依次回溯获得第二函数调用顺序,
其中,所述函数调用栈根据所述第一函数调用顺序以及所述第二函数调用顺序获得。
4.如权利要求1所述的函数调用栈回溯方法,其特征在于,所述根据所述第一函数调用顺序,获得函数调用栈之前,还包括:
利用编译程序的函数调用算法自当前函数依次回溯获得第三函数调用顺序,
其中,所述函数调用栈根据所述第一函数调用顺序以及所述第三函数调用顺序获得。
5.如权利要求4所述的函数调用栈回溯方法,其特征在于,所述利用编译程序的函数调用算法自当前函数依次回溯获得第三函数调用顺序包括:
函数调用算法获取步骤:根据当前函数的函数名,获取当前函数的函数调用算法;
调用函数确定步骤:根据当前函数的函数调用算法以及当前函数的地址信息,确定调用当前函数的调用函数;
当前函数赋值步骤:将所述调用函数作为当前函数;
迭代执行所述函数调用算法获取步骤、所述调用函数确定步骤以及所述当前函数赋值步骤,获得所述第三函数调用顺序。
6.如权利要求1至5任一项所述的函数调用栈回溯方法,其特征在于,所述函数调用栈回溯方法集成在程序中,以当所述程序异常时自动执行所述函数调用栈回溯方法。
7.一种程序异常处理方法,其特征在于,包括:
捕获程序的异常信号;
执行如权利要求1至6任一项所述的函数调用栈回溯方法,以获取所述函数调用栈;
根据所述函数调用栈进行程序异常检测。
8.一种函数调用栈回溯装置,其特征在于,包括:
第一获取模块,配置成获取程序异常时的异常栈数据段;
提取模块,配置成自所述异常栈数据段,依次提取数据:
判断模块,配置成判断各数据是否为地址信息;
函数查找模块,配置成若所述判断模块判断为是,则根据该数据以及一函数映射表,查找所述地址信息对应的函数名;
回溯模块,配置成按所述数据的提取顺序以及所查找的函数名,回溯获得第一函数调用顺序;
第二获取模块,配置成至少根据所述第一函数调用顺序,获得函数调用栈。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行:
如权利要求1至6任一项所述的函数调用栈回溯方法;和/或
如权利要求7所述的程序异常处理方法。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行:
如权利要求1至6任一项所述的函数调用栈回溯方法;和/或
如权利要求7所述的程序异常处理方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州科达科技股份有限公司,未经苏州科达科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110736647.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种组合式智能印刷机
- 下一篇:一种隧道用玻璃钢复合门