发明内容
本公开实施例至少提供一种应用稳定性检测方法、装置、电子设备及存储介质。
本公开实施例提供了一种应用稳定性检测方法,所述方法包括:
在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口;
在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息;
将所述模块信息存储于预先申请的存储空间中;
在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
一种可选的实施方式中,在所述在目标应用当前启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口之前,所述方法包括:
所述目标应用在当前启动之前运行的过程中,实时记录所述键映射中函数标识信息的存储数量;
在所述存储数量超过第二预设信息阈值时,向所述服务器发送所述目标应用的异常运行信息;
在接收到所述服务器反馈的稳定性检测指令时,确定所述目标应用符合稳定性检测条件,其中,所述稳定性检测指令为所述服务器在接收到多个终端发送的异常运行信息后,所述多个终端的数量超过预设数量后所述服务器发送的指令。
一种可选的实施方式中,所述在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息,包括:
在检测到有第一功能模块调用所述第一函数调用接口的情况下,获取所述功能模块的所处位置对应的加载地址;
基于所述加载地址,回溯得到加载地址对应的动态库;
确定所述动态库的动态库名称信息和所述加载地址对应的函数名称信息,所述模块信息包括所述动态库名称信息和所述函数名称信息。
一种可选的实施方式中,在所述将所述模块信息存储于预先申请的存储空间中之前,所述方法包括:
在所述目标应用的运行环境中申请用于存储所述模块信息的存储空间,其中,所述存储空间与所述键映射的存储大小相同,所述存储空间包括多个子空间,所述多个子空间与所述键映射中的多个存储位置相对应。
一种可选的实施方式中,所述将所述模块信息存储于预先申请的存储空间中,包括:
将所述模块信息存储于所述存储空间中与所述函数标识信息所存放的存储位置对应的子空间中。
一种可选的实施方式中,所述在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器之前,所述方法包括:
在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中删除函数标识信息的第二函数接口;
在检测到有第二功能模块调用所述第二函数接口的情况下,删除与所述第二函数接口对应的、存储在所述存储空间中的模块信息。
一种可选的实施方式中,所述在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器之后,所述方法包括:
在接收到服务器发送的针对所述目标应用的修复文件的情况下,基于所述修复文件,更新所述目标应用;
在没有接收到服务器发送的所述修复文件的情况下,遍历所述存储空间,筛选出重复的所述模块信息;将所述键映射中与重复的所述模块信息对应的函数标识信息删除,保留在时间维度上最后写入的函数标识信息。
本公开实施例还提供一种应用稳定性检测装置,所述装置包括:
接口接管模块,用于在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口;
信息确定模块,用于在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息;
信息存储模块,用于将所述模块信息存储于预先申请的存储空间中;
信息发送模块,用于在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
一种可选的实施方式中,所述装置还包括应用记录模块,所述应用记录模块用于:
所述目标应用在当前启动之前运行的过程中,实时记录所述键映射中函数标识信息的存储数量;
在所述存储数量超过第二预设信息阈值时,向所述服务器发送所述目标应用的异常运行信息;
在接收到所述服务器反馈的稳定性检测指令时,确定所述目标应用符合稳定性检测条件,其中,所述稳定性检测指令为所述服务器在接收到多个终端发送的异常运行信息后,所述多个终端的数量超过预设数量后所述服务器发送的指令。
一种可选的实施方式中,所述信息确定模块具体用于:
在检测到有第一功能模块调用所述第一函数调用接口的情况下,获取所述功能模块的所处位置对应的加载地址;
基于所述加载地址,回溯得到加载地址对应的动态库;
确定所述动态库的动态库名称信息和所述加载地址对应的函数名称信息,所述模块信息包括所述动态库名称信息和所述函数名称信息。
一种可选的实施方式中,所述装置还包括空间申请模块,所述空间申请模块用于:
在所述目标应用的运行环境中申请用于存储所述模块信息的存储空间,其中,所述存储空间与所述键映射的存储大小相同,所述存储空间包括多个子空间,所述多个子空间与所述键映射中的多个存储位置相对应。
一种可选的实施方式中,所述信息存储模块具体用于:
将所述模块信息存储于所述存储空间中与所述函数标识信息所存放的存储位置对应的子空间中。
一种可选的实施方式中,所述装置还包括信息删除模块,所述信息删除模块用于:
在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中删除函数标识信息的第二函数接口;
在检测到有第二功能模块调用所述第二函数接口的情况下,删除与所述第二函数接口对应的、存储在所述存储空间中的模块信息。
一种可选的实施方式中,所述装置还包括应用更新模块,所述应用更新模块用于:
在接收到服务器发送的针对所述目标应用的修复文件的情况下,基于所述修复文件,更新所述目标应用;
在没有接收到服务器发送的所述修复文件的情况下,遍历所述存储空间,筛选出重复的所述模块信息;将所述键映射中与重复的所述模块信息对应的函数标识信息删除,保留在时间维度上最后写入的函数标识信息。
本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述应用稳定性检测方法的步骤。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述应用稳定性检测方法的步骤。
本公开实施例提供的应用稳定性检测方法、装置、电子设备及存储介质,通过在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口;在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息;将所述模块信息存储于预先申请的存储空间中;在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
这样,在应用运行的过程中对其进行稳定性检测,针对应用的线程局部存储空间,接管函数调用接口,在功能模块调用函数调用接口时可以通过加载地址获取模块信息并加以存储,不仅可以有效实现对应用的稳定性检测,而且在稳定性检测过程中还可以实现对异常情况进行定位,准确分析出存在运行异常的部分,有助于对异常情况做出及时的应对措施,保证应用稳定性检测的有效性和灵活性,降低应用崩溃的可能性,有利于提高应用的稳定性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,在应用运行的过程中,由于底层代码存在问题或者运行环节中出现的问题,会出现线程对于变量反复调用的情况,而对于线程局部存储来讲,其大小是固定的,线程局部变量反复调用会导致线程局部存储被无效占用,无法继续申请并存储新的线程局部变量,导致程序逻辑难以正确执行,甚至可能会导致程序的崩溃,降低了程序的稳定性。
基于上述研究,本公开提供了一种应用稳定性检测方法,可以在应用运行的过程中对其进行稳定性检测,针对应用的线程局部存储空间,接管函数调用接口,在功能模块调用函数调用接口时可以通过加载地址获取模块信息并加以存储,不仅可以有效实现对应用的稳定性检测,而且在稳定性检测过程中还可以实现对异常情况进行定位,准确分析出存在运行异常的部分,有助于对异常情况做出及时的应对措施,保证应用稳定性检测的有效性和灵活性,降低应用崩溃的可能性,有利于提高应用的稳定性。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种应用稳定性检测方法进行详细介绍,本公开实施例所提供的应用稳定性检测方法的执行主体一般为具有一定计算能力的电子设备,该电子设备例如包括:终端设备或服务器或其它处理设备。在一些可能的实现方式中,该应用稳定性检测方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为终端为例对本公开实施例提供的应用稳定性检测方法加以说明。
请参阅图1,图1为本公开实施例提供的一种应用稳定性检测方法的应用场景示意图。如图1中所示,在使用应用稳定性检测方法的应用场景中,包括有服务器,以及与服务器可以实现通信连接的多个终端,在应用运行的过程中,用户可以使用智能手机、平板电脑、可穿戴设备等终端向服务器发送应用运行过程中产生的运行信息,服务器可以针对运行信息发送给研发人员,请求研发人员进行分析,并且可以将研发人员的信息发送给用户,用户可以通过终端接收服务器发送的信息。
请同时参阅图2,图2为本公开实施例所提供的一种应用稳定性检测方法的流程图。如图2中所示,本公开实施例提供的应用稳定性检测方法包括:
S201:在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口。
该步骤中,在目标应用启动的情况下,可以检测所述目标应用是否符合稳定性检测条件,在检测到所述目标应用符合稳定性检测条件的情况下,可以接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口。
其中,所述目标应用的键映射中包括用于存储所述函数标识信息的多个存储位置,所述键映射与所述目标应用的线程局部存储空间的存储大小相同,所述线程局部存储空间包含多个子存储空间,所述多个子存储空间与所述键映射中的多个存储位置相对应。
其中,所述键映射,为Linux***中的key_map,表现形式可以是***中的一组静态数组,其作为与所述线程局部存储空间相映射的存储位置的集合,包含多个存储位置,用于存储函数标识信息。
S202:在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息。
该步骤中,在检测到有第一功能模块调用所述第一函数调用接口后,可以基于所述功能模块,接管所述功能模块在时间维度上调用所述第一函数调用接口时的具体信息,以此来获取所述功能模块的模块信息,进而可以对所述模块信息进行处理。
S203:将所述模块信息存储于预先申请的存储空间中。
该步骤中,在得到所述模块信息的情况下,可以基于预先申请的存储空间,将所述模块信息存储在所述存储空间中,进而可以对所述存储空间及其存储的模块信息进行处理。
其中,所述预先申请的存储空间,可以是驻留于运行目标应用的终端的存储空间,也可以是基于运行目标应用的终端的无线云端的存储空间,也可以是设置在由第三方托管的虚拟服务器上的存储空间,还可以是备份到存储卡或存储硬盘上的存储空间,在此并不做任何限定。
S204:在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
该步骤中,可以先获取所述存储空间中的信息存储量,然后与所述第一预设信息阈值进行比较,当所述存储空间中的信息存储量超过第一预设信息阈值时,可以将所述存储空间中存储的多个模块信息发送至服务器。
其中,所述存储空间中的信息存储量,可以是一个功能模块存储的多个模块信息,也可以是多个功能模块存储的多个模块信息,在此并不做任何限定。
其中,所述第一预设信息阈值的数值不能大于所述存储空间包括的多个子空间的个数的数值。
本公开实施例提供的应用稳定性检测方法,通过在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口;在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息;将所述模块信息存储于预先申请的存储空间中;在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
这样,在应用运行的过程中对其进行稳定性检测,针对应用的线程局部存储空间,接管函数调用接口,在功能模块调用函数调用接口时可以通过加载地址获取模块信息并加以存储,不仅可以有效实现对应用的稳定性检测,而且在稳定性检测过程中还可以实现对异常情况进行定位,准确分析出存在运行异常的部分,有助于对异常情况做出及时的应对措施,保证应用稳定性检测的有效性和灵活性,降低应用崩溃的可能性,有利于提高应用的稳定性。
请同时参阅图3,图3为本公开实施例提供的另一种应用稳定性检测方法的流程图。如图3中所示,本公开实施例提供的应用稳定性检测方法包括:
S301:目标应用在当前启动之前运行的过程中,根据实时记录到的所述目标应用的键映射中函数标识信息的存储数量,确定所述目标应用符合稳定性检测条件。
该步骤中,在目标应用在当前启动之前运行的过程中,需要确定所述目标应用是否符合稳定性检测条件,为此,可以实时记录所述目标应用的键映射中函数标识信息的存储数量,以此判断所述目标应用是否符合稳定性检测条件。
S302:在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口。
S303:在检测到有第一功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息。
S304:将所述模块信息存储于预先申请的存储空间中。
S305:在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
其中,步骤S302至步骤S305的描述可以参照步骤S201至步骤S204的描述,并且可以达到相同的技术效果和解决相同的技术问题,在此不做赘述。
接下来,将结合一些具体实施方式进一步对本实施例进行说明。
一些可能的实施方式中,步骤S301包括:
所述目标应用在当前启动之前运行的过程中,实时记录所述键映射中函数标识信息的存储数量;
在所述存储数量超过第二预设信息阈值时,向所述服务器发送所述目标应用的异常运行信息;
在接收到所述服务器反馈的稳定性检测指令时,确定所述目标应用符合稳定性检测条件,其中,所述稳定性检测指令为所述服务器在接收到多个终端发送的异常运行信息后,所述多个终端的数量超过预设数量后所述服务器发送的指令。
该步骤中,在目标应用在当前启动之前运行的过程中,需要确定所述目标应用是否符合稳定性检测条件,为此,可以实时记录所述目标应用的键映射中函数标识信息的存储数量,然后与所述第二预设信息阈值进行比较,当所述存储数量超过第二预设信息阈值时,可以向所述服务器发送所述目标应用的异常运行信息,当所述服务器在接收到多个终端发送的异常运行信息后,所述多个终端的数量超过预设数量时,确定接收到所述服务器反馈的稳定性检测指令,基于所述稳定性检测指令,进而判断所述目标应用符合稳定性检测条件。
其中,所述第二预设信息阈值的数值,可以与所述第一预设信息阈值的数值相同,也可以不同,在此并不做任何限定。
其中,所述第二预设信息阈值的数值不能大于所述键映射包括的多个存储位置的个数的数值。
一些可能的实施方式中,步骤S303包括:
在检测到有第一功能模块调用所述第一函数调用接口的情况下,获取所述功能模块的所处位置对应的加载地址;
基于所述加载地址,回溯得到加载地址对应的动态库;
确定所述动态库的动态库名称信息和所述加载地址对应的函数名称信息,所述模块信息包括所述动态库名称信息和所述函数名称信息。
该步骤中,在检测到有第一功能模块调用所述第一函数调用接口后,可以基于所述功能模块,接管所述功能模块在时间维度上调用所述第一函数调用接口时所述功能模块的所处位置对应的加载地址,基于所述加载地址,可以回溯得到加载地址对应的动态库,从而可以确定所述动态库的动态库名称信息和所述加载地址对应的函数名称信息,以此来获取所述功能模块的模块信息,所述模块信息包括所述动态库名称信息和所述函数名称信息,进而可以对所述模块信息进行处理。
一些可能的实施方式中,步骤S303在确定所述动态库的动态库名称信息和所述加载地址对应的函数名称信息的情况下,还可以抓取当前线程的调用栈,作为附加信息,进一步完善所述模块信息。
进一步的,在一些可能的实施方式中,在步骤S304之前,所述方法还包括:
在所述目标应用的运行环境中申请用于存储所述模块信息的存储空间,其中,所述存储空间与所述键映射的存储大小相同,所述存储空间包括多个子空间,所述多个子空间与所述键映射中的多个存储位置相对应。
该步骤中,在获取到所述功能模块的模块信息后,需要对所述功能模块的模块信息进行存储,为此,可以在所述目标应用的运行环境中申请存储空间,进而可以使用所述存储空间存储所述功能模块的模块信息。
一些可能的实施方式中,步骤S304包括:
将所述模块信息存储于所述存储空间中与所述函数标识信息所存放的存储位置对应的子空间中。
该步骤中,在得到所述模块信息的情况下,可以基于预先申请的存储空间,将所述模块信息包括的所述动态库名称信息和所述函数名称信息存储在所述存储空间中与所述函数标识信息所存放的存储位置对应的子空间中,进而可以对所述存储空间及其存储的模块信息进行处理。
一些可能的实施方式中,步骤S304在存储所述动态库名称信息和所述函数名称信息的情况下,还可以存储当前线程的调用栈,作为附加信息,进一步完善所述存储空间。
进一步的,在一些可能的实施方式中,在步骤S305之前,所述方法还包括:
在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中删除函数标识信息的第二函数接口;
在检测到有第二功能模块调用所述第二函数接口的情况下,删除与所述第二函数接口对应的、存储在所述存储空间中的模块信息。
该步骤中,在目标应用启动的情况下,可以检测所述目标应用是否符合稳定性检测条件,在检测到所述目标应用符合稳定性检测条件的情况下,可以接管用于在所述目标应用的键映射中删除函数标识信息的第二函数调用接口,在检测到有第二功能模块调用所述第二函数调用接口后,可以基于所述功能模块,接管所述功能模块在时间维度上调用所述第二函数调用接口时的具体信息,以此来删除与所述第二函数接口对应的、存储在所述存储空间中的模块信息,进而可以对所述存储空间及其存储的模块信息进行处理。
其中,所述第二功能模块可以是与第一功能模块相同的功能模块,也可以是不同的功能模块,在此并不做任何限定。
进一步的,在一些可能的实施方式中,在步骤S305之后,所述方法还包括:
在接收到服务器发送的针对所述目标应用的修复文件的情况下,基于所述修复文件,更新所述目标应用;
在没有接收到服务器发送的所述修复文件的情况下,遍历所述存储空间,筛选出重复的所述模块信息;将所述键映射中与重复的所述模块信息对应的函数标识信息删除,保留在时间维度上最后写入的函数标识信息。
该步骤中,在得到所述存储空间中存储的多个模块信息并发送至服务器后,经服务器发送至研发人员。研发人员基于所述多个模块信息,定位到所述功能模块,进而对产生异常情况的功能模块做出调整,从而研发出修复文件。经过服务器的传送,接收到针对所述目标应用的修复文件,从而可以更新所述目标应用。
进一步的,在没有接收到服务器发送的所述修复文件的情况下,可以遍历所述存储空间,筛选出重复的所述模块信息,进而获取与重复的所述模块信息对应的所述键映射中的函数标识信息,通过将所述函数标识信息删除的方式,保留在时间维度上最后写入的函数标识信息,从而实现更新所述目标应用。
本公开实施例提供的应用稳定性检测方法,可以在应用运行的过程中对其进行稳定性检测,针对应用的线程局部存储空间,接管函数调用接口,在功能模块调用函数调用接口时可以通过加载地址获取模块信息并加以存储,不仅可以有效实现对应用的稳定性检测,而且在稳定性检测过程中还可以实现对异常情况进行定位,准确分析出存在运行异常的部分,有助于对异常情况做出及时的应对措施,保证应用稳定性检测的有效性和灵活性,降低应用崩溃的可能性,有利于提高应用的稳定性。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与应用稳定性检测方法对应的应用稳定性检测装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述应用稳定性检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
请参阅图4和图5,图4为本公开实施例提供的一种应用稳定性检测装置的示意图之一,图5为本公开实施例提供的一种应用稳定性检测装置的示意图之二。如图4中所示,本公开实施例提供的应用稳定性检测装置400,包括:
接口接管模块410,用于在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中添加函数标识信息的第一函数调用接口。
信息确定模块420,用于在检测到有功能模块调用所述第一函数调用接口的情况下,确定所述功能模块的模块信息。
信息存储模块430,用于将所述模块信息存储于预先申请的存储空间中。
信息发送模块440,用于在所述存储空间的信息存储量超过第一预设信息阈值时,将所述存储空间中存储的多个模块信息发送至服务器。
一种可选的实施方式中,所述信息确定模块420具体用于:
在检测到有功能模块调用所述第一函数调用接口的情况下,获取所述功能模块的所处位置对应的加载地址;
基于所述加载地址,回溯得到加载地址对应的动态库;
确定所述动态库的动态库名称信息和所述加载地址对应的函数名称信息,所述模块信息包括所述动态库名称信息和所述函数名称信息。
一种可选的实施方式中,所述信息存储模块430具体用于:
将所述模块信息存储于所述存储空间中与所述函数标识信息所存放的存储位置对应的子空间中。
一种可选的实施方式中,如图5中所示,所述数值处理装置400还包括应用记录模块450、空间申请模块460、信息删除模块470和应用更新模块480,所述应用记录模块450、空间申请模块460、信息删除模块470和应用更新模块480用于:
应用记录模块450,用于目标应用在当前启动之前运行的过程中,实时记录所述目标应用的键映射中函数标识信息的存储数量,确定所述目标应用符合稳定性检测条件。
空间申请模块460,用于在所述目标应用的运行环境中申请用于存储所述模块信息的存储空间。
信息删除模块470,用于在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中删除函数标识信息的第二函数接口,删除与所述第二函数接口对应的、存储在所述存储空间中的模块信息。
应用更新模块480,用于基于所述多个模块信息,修复所述目标应用。
一种可选的实施方式中,所述应用记录模块450具体用于:
所述目标应用在当前启动之前运行的过程中,实时记录所述键映射中函数标识信息的存储数量;
在所述存储数量超过第二预设信息阈值时,向所述服务器发送所述目标应用的异常运行信息;
在接收到所述服务器反馈的稳定性检测指令时,确定所述目标应用符合稳定性检测条件,其中,所述稳定性检测指令为所述服务器在接收到多个终端发送的异常运行信息后,所述多个终端的数量超过预设数量后所述服务器发送的指令。
一种可选的实施方式中,所述空间申请模块460具体用于:
在所述目标应用的运行环境中申请用于存储所述模块信息的存储空间,其中,所述存储空间与所述键映射的存储大小相同,所述存储空间包括多个子空间,所述多个子空间与所述键映射中的多个存储位置相对应。
一种可选的实施方式中,所述信息删除模块470具体用于:
在目标应用启动,并且所述目标应用符合稳定性检测条件的情况下,接管用于在所述目标应用的键映射中删除函数标识信息的第二函数接口;
在检测到有第二功能模块调用所述第二函数接口的情况下,删除与所述第二函数接口对应的、存储在所述存储空间中的模块信息。
一种可选的实施方式中,所述应用更新模块480具体用于:
在接收到服务器发送的针对所述目标应用的修复文件的情况下,基于所述修复文件,更新所述目标应用;
在没有接收到服务器发送的所述修复文件的情况下,遍历所述存储空间,筛选出重复的所述模块信息;将所述键映射中与重复的所述模块信息对应的函数标识信息删除,保留在时间维度上最后写入的函数标识信息。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例提供的应用稳定性检测方法,可以在应用运行的过程中对其进行稳定性检测,针对应用的线程局部存储空间,接管函数调用接口,在功能模块调用函数调用接口时可以通过加载地址获取模块信息并加以存储,不仅可以有效实现对应用的稳定性检测,而且在稳定性检测过程中还可以实现对异常情况进行定位,准确分析出存在运行异常的部分,有助于对异常情况做出及时的应对措施,保证应用稳定性检测的有效性和灵活性,降低应用崩溃的可能性,有利于提高应用的稳定性。
对应于上述的应用稳定性检测方法,本公开实施例还提供了一种电子设备600,如图6所示,为本公开实施例提供的电子设备600结构示意图,包括:
处理器610、存储器620、和总线630;存储器620用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器610中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器610通过内存621与外部存储器622进行数据交换,当所述电子设备600运行时,所述处理器610与所述存储器620之间通过总线630通信,使得所述处理器610可以执行上述的应用稳定性检测方法的步骤。
上述指令的具体执行过程可以参考本公开实施例中所述的应用稳定性检测方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的应用稳定性检测方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品包括有计算机指令,所述计算机指令被处理器执行时可以执行上述方法实施例中所述的应用稳定性检测方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。