[发明专利]修复异常任务的方法及装置在审
| 申请号: | 202110957074.4 | 申请日: | 2021-08-19 |
| 公开(公告)号: | CN113672424A | 公开(公告)日: | 2021-11-19 |
| 发明(设计)人: | 刘宇佳;黄琳;简云定;伏伟;曹鸿健;张婉桥 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
| 主分类号: | G06F11/07 | 分类号: | G06F11/07 |
| 代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 陈霁;周良玉 |
| 地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 修复 异常 任务 方法 装置 | ||
1.一种修复异常任务的方法,通过搭载有实时操作系统RTOS的设备执行,所述设备中配置有异常处理函数和调试组件,所述方法包括:
响应于确定所述设备当前执行的任务将要从第一任务切换到第二任务,检测所述第一任务是否发生缓冲区溢出;
若检测结果为是,则将所述第一任务确定为异常任务;
利用所述异常处理函数调用所述调试组件,使得所述调试组件将所述异常任务的第一任务函数替换为目标函数。
2.根据权利要求1所述的方法,其中,在所述将所述异常任务的第一任务函数替换为目标函数之前,还包括:
从预设的函数集合中选取出一个函数作为目标函数。
3.根据权利要求2所述的方法,其中,所述函数集合包括无限循环函数和/或与所述异常任务有关的第二任务函数。
4.根据权利要求3所述的方法,其中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:
当所述函数集合包括所述无限循环函数时,选取所述无限循环函数作为目标函数。
5.根据权利要求3所述的方法,其中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:
当所述函数集合包括所述第二任务函数时,若所述异常任务包括多个子任务,并且所述第二任务函数是所述多个子任务之一的任务函数,则选取所述第二任务函数作为目标函数。
6.根据权利要求3所述的方法,其中,所述从预设的函数集合中选取出一个函数作为目标函数,包括:
当所述函数集合包括所述无限循环函数和所述第二任务函数时,确定所述第一任务函数是否与所述第二任务函数相同;
若确定结果为是,则选取所述无限循环函数作为目标函数;
若确定结果为否,则选取所述第二任务函数作为目标函数。
7.根据权利要求1所述的方法,其中,所述设备包括ARM处理器,所述ARM处理器包括所述调试组件和闪存地址重载及断点单元FPB,所述FPB包括重映射函数;以及
所述将所述异常任务的第一任务函数替换为目标函数,包括:
利用所述重映射函数,将所述第一任务函数重映射为所述目标函数。
8.根据权利要求3所述的方法,其中,在将所述无限循环函数作为目标函数的情况下,在所述将所述异常任务的第一任务函数替换为目标函数之后,还包括:
向所述设备所属的用户呈现用于进行异常提示的提示信息。
9.根据权利要求3所述的方法,其中,在将所述无限循环函数作为目标函数的情况下,在所述将所述异常任务的第一任务函数替换为目标函数之后,还包括:
响应于检测到所述第二任务执行完成,控制所述设备重启。
10.根据权利要求1所述的方法,其中,所述异常处理函数包括所述RTOS自带的HOOK函数,或者开发人员编写的中断处理函数。
11.根据权利要求1-10之一所述的方法,其中,所述检测所述第一任务是否发生缓冲区溢出,包括:
检测所述第一任务是否发生栈溢出,和/或检测所述第一任务是否发生堆溢出。
12.根据权利要求11所述的方法,其中,所述检测所述第一任务是否发生栈溢出,包括:
根据所述第一任务的栈空间的生长方向,修改所述栈空间的栈顶指针;
确定修改后的所述栈顶指针指向的地址是否包含在所述栈空间的地址范围内;
若确定结果为是,则确定所述第一任务未发生栈溢出;
若确定结果为否,则确定所述第一任务发生栈溢出。
13.根据权利要求12所述的方法,其中,所述生长方向为从高地址向低地址生长;以及
所述修改所述栈空间的栈顶指针,包括:
将所述栈顶指针递减1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110957074.4/1.html,转载请声明来源钻瓜专利网。





