[发明专利]一种IOS运行异常的保护方法、装置、终端设备及存储介质有效
申请号: | 201811143337.2 | 申请日: | 2018-09-28 |
公开(公告)号: | CN109408265B | 公开(公告)日: | 2022-05-10 |
发明(设计)人: | 陈俊城 | 申请(专利权)人: | 广州虎牙信息科技有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/30 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 511446 广东省广州市番禺区南村镇万博二*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 ios 运行 异常 保护 方法 装置 终端设备 存储 介质 | ||
本申请提供一种IOS运行异常的保护方法、装置、终端设备及存储介质,通过判断是否存在执行指令的方法,若不存在执行指令的方法,将执行指令的方法名称添加到容器中,并把指令转发给容器,在容器中匹配所述执行指令的方法名称,返回一个非空值,返回非空值的目的是使程序继续运行,不会因为不存在执行指令的方法而使应用程序崩溃;获取并记录执行指令时所有线程的方法调用栈的信息,最后将目标信息发送到服务器,开发人员可以通过目标信息查找导致应用程序崩溃的原因。
技术领域
本申请涉及软件领域,尤其涉及一种IOS运行异常的保护方法、装置、终端设备及存储介质。
背景技术
在智能终端的应用的实际开发过程中,或者用户在智能终端中使用应用程序的时候,经常会出现应用程序崩溃的情况。
目前,操作系统上安装的应用程序在运行过程中,如果需要执行用户的操作指令,应用程序会调用与用户操作指令相对应的方法来执行指令。在执行任务过程中,若出现执行错误或者其他错误,例如执行某个指令的方法不存在,则会抛出异常,操作系统会根据异常将应用程序崩溃掉,例如对应用程序进行闪退操作,许多的奔溃情况事发偶然难以重现,使得开发人员难以获取应用程序崩溃的原因,进而导致应用程序崩溃的问题无法得到有效的解决。
发明内容
有鉴于此,本申请提供一种IOS运行异常的保护方法,以解决当应用程序出现崩溃时,开发人员不容易查找崩溃原因的问题。
根据本申请实施例的第一方面,提供一种方法,所述方法包括:
接收指令,判断是否存在执行指令的方法;
若不存在所述执行指令的方法,在容器中添加执行指令的方法名称和目标类的名称,将所述指令转发给所述容器;
在所述容器中匹配所述目标类的名称和所述执行指令的方法名称,所述容器向应用程序返回一个非空值;
获取并保存执行指令时所有线程的方法调用栈,其中,所述所有线程为当前应用程序中存在的全部线程;
将目标数据发送到服务器,其中,所述目标数据包括方法调用栈、目标类的名称、方法名称和当前页面的类名。
可选地,所述判断是否存在执行指令的方法,具体包括:
调用Objc_msgSend方法在目标类的方法列表中查找与所述指令对应的所述执行指令的方法;
若存在所述执行指令的方法,则使用所述执行指令的方法执行指令。
可选地,所述调用Objc_msgSend方法在所述方法列表中查找与所述指令对应的所述执行指令的方法,包括:
若存在所述执行指令的方法,将存放所述指令的入口地址与所述执行指令的方法进行动态绑定;
objc_msgSend将其在目标类中查找到的所述执行指令的方法缓存在映射表中,所述映射表用来存放所述执行指令的方法和所述指令的入口地址的映射关系;
当再次接收到所述指令时,从所述映射表中调用所述执行指令的方法。
可选地,若不存在所述执行指令的方法,在容器中添加执行指令的方法名称和目标类的名称,将所述指令转发给所述容器,具体包括:
若所述目标类中不存在所述执行指令的方法,沿着继承体系在当前目标类的父类中继续查找,所述目标类继承于所述父类;
若在所述父类中找到与所述指令对应的所述执行指令的方法,则使用所述执行指令的方法执行指令并停止查找所述执行指令的方法;
若所述父类中仍不存在所述执行指令的方法,则在容器中添加执行指令的方法名称和目标类的名称,将所述指令转发给所述容器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州虎牙信息科技有限公司,未经广州虎牙信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811143337.2/2.html,转载请声明来源钻瓜专利网。