发明内容
本公开实施例至少提供一种崩溃聚类方法、装置、电子设备以及存储介质。
第一方面,本公开实施例提供了一种崩溃聚合方法,包括:
获取多条在操作系统发生崩溃后生成的系统崩溃信息;
针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征;
基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识;
基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。
一种可选的实施方式中,所述操作系统发生的崩溃包括线程崩溃;
所述获取多条在操作系统发生崩溃后生成的系统崩溃信息,包括:
获取所述操作系统中发生崩溃的线程对应的调用栈信息;
基于所述调用栈信息,生成所述系统崩溃信息。
一种可选的实施方式中,所述基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征,包括:
在所述系统崩溃信息为基于所述调用栈信息生成的情况下,从所述系统崩溃信息中提取出崩溃进程的目标标识信息、所述系统崩溃信息的摘要信息以及所述目标进程的调用信息,作为所述崩溃特征。
一种可选的实施方式中,从所述系统崩溃信息中提取出所述目标进程的调用信息,包括:
从所述系统崩溃信息中,提取出所述目标进程调用的目标对象的类名、所述目标对象的方法名以及所述目标对象对应的持锁信息。
一种可选的实施方式中,所述操作系统发生的崩溃包括内核崩溃;
所述获取多条在操作系统发生崩溃后生成的系统崩溃信息,包括:
获取所述操作系统在因内核崩溃重启之前的内核运行日志信息;
基于所述内核运行日志信息,生成所述系统崩溃信息。
一种可选的实施方式中,所述基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征,包括:
在所述系统崩溃信息为基于所述内核运行日志信息生成的情况下,确定所述系统崩溃信息中指示的崩溃类型信息;
确定与所述崩溃类型信息匹配的正则表达式;
利用所述正则表达式,从所述系统崩溃信息中提取崩溃原因信息;
从所述系统崩溃信息中提取出发生崩溃时的待执行指令信息以及发生异常的内存地址信息;
将所述崩溃类型信息、所述崩溃原因信息、所述待执行指令信息以及所述内存地址信息作为所述崩溃特征。
一种可选的实施方式中,所述基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识,包括:
确定所述崩溃特征的信息摘要值,并将所述信息摘要值作为所述系统崩溃信息对应的特征标识。
第二方面,本公开实施例还提供一种崩溃聚类装置,包括:
获取模块,用于获取多条在操作系统发生崩溃后生成的系统崩溃信息;
提取模块,用于针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征;
计算模块,用于基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识;
归类模块,用于基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。
一种可选的实施方式中,所述操作系统发生的崩溃包括线程崩溃;
所述获取模块在获取多条在操作系统发生崩溃后生成的系统崩溃信息时用于:
所述获取多条在操作系统发生崩溃后生成的系统崩溃信息,包括:
获取所述操作系统中发生崩溃的线程对应的调用栈信息;
基于所述调用栈信息,生成所述系统崩溃信息。
一种可选的实施方式中,所述提取模块在基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征时,用于:
在所述系统崩溃信息为基于所述调用栈信息生成的情况下,从所述系统崩溃信息中提取出崩溃进程的目标标识信息、所述系统崩溃信息的摘要信息以及所述目标进程的调用信息,作为所述崩溃特征。
一种可选的实施方式中,所述提取模块在从所述系统崩溃信息中提取出所述目标进程的调用信息时,用于:
从所述系统崩溃信息中,提取出所述目标进程调用的目标对象的类名、所述目标对象的方法名以及所述目标对象对应的持锁信息。
一种可选的实施方式中,所述操作系统发生的崩溃包括内核崩溃;
所述获取模块在获取多条在操作系统发生崩溃后生成的系统崩溃信息时,具体用于:
获取所述操作系统在因内核崩溃重启之前的内核运行日志信息,基于所述内核运行日志信息,生成所述系统崩溃信息。
一种可选的实施方式中,所述提取模块在基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征时,具体用于:
在所述系统崩溃信息为基于所述内核运行日志信息生成的情况下,确定所述系统崩溃信息中指示的崩溃类型信息,用所述正则表达式,从所述系统崩溃信息中提取崩溃原因信息,从所述系统崩溃信息中提取出发生崩溃时的待执行指令信息以及发生异常的内存地址信息,所述崩溃类型信息、所述崩溃原因信息、所述待执行指令信息以及所述内存地址信息作为所述崩溃特征。
一种可选的实施方式中,所述计算模块在基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识时,具体用于:
确定所述崩溃特征的信息摘要值,并将所述信息摘要值作为所述系统崩溃信息对应的特征标识。
第三方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的崩溃聚类方法、装置、电子设备及存储介质,首先获取多条在操作系统发生崩溃后生成的系统崩溃信息,然后,针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征,之后,基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识,最后,基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。
本公开实施例通过基于系统崩溃信息的类型,从系统崩溃信息中提取崩溃特征,崩溃特征能够体现系统崩溃信息中关于崩溃的特征点,具有代表性,由崩溃特征生成的特征标识能够对崩溃特征的特征进行表征,因此,崩溃标识能够体现崩溃的各种特征,实现了对崩溃高度概括,不直接对系统崩溃信息进行聚类,而是对特征标识的聚类,能够将大量的无关信息剔除,在保留各种与崩溃相关的特征的前提下,提高聚类效率,减少问题种类便于开发者查看和修正。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,在用户终端发生崩溃后,崩溃信息会上传到数据库中,便于开发者查看、分析崩溃发生原因以及修复问题,但是由于数据量非常庞大,开发者处理起来也是需要很多时间的。
基于上述研究,本公开提供了一种崩溃聚类的方法,对操作系统发生的崩溃,将崩溃后产生的系统崩溃信息按照某些特征进行分类,将相同原因导致的崩溃划分为同一类,减少问题种类便于开发者查看。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种崩溃聚类方法进行详细介绍,本公开实施例所提供的崩溃聚类方法的执行主体一般为具有一定计算能力的计算机设备。在一些可能的实现方式中,该崩溃聚类方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的崩溃聚类方法的流程图,所述方法包括步骤S101~S104,其中:
S101:获取多条在操作系统发生崩溃后生成的系统崩溃信息。
其中,操作系统是管理计算机硬件与软件资源的计算机程序,需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务,提供一个让用户和系统交互的操作界面。目前操作系统主要有PC端和移动端两种类型,PC端包括但不限于微软Windows系统(通常用于普通计算机)和Linux系统(通常用于服务器);移动端包括但不限于安卓系统和iOS系统。操作系统的应用非常广泛,从智能台灯、扫地机器人、手机、计算机到大型服务器,都需要操作系统。
可选的,操作系统崩溃是指由操作失误或病毒入侵导致系统无法正常运作、频繁死机的症状,包括线程崩溃和内核崩溃。
其中,线程崩溃是指线程因资源被占用或其他原因无法继续进行导致的操作系统崩溃。通常使用watchdog(看门狗)监控操作系统的运行状况,所述看门狗从本质上来说是一个定时器电路,一般有一个输入和输出,其中输入被称为喂狗,输出一般连接到另外一个部分的复位端。操作系统稳定运行时会在执行完特定指令后进行喂狗,若在一定周期内看门狗没有收到来自软件的喂狗信号,则认为系统异常。
若操作系统两次喂狗超时,则所述操作系统崩溃为线程崩溃,所述系统崩溃信息从所有线程的调用栈信息中获取。
具体的,在所述崩溃为线程崩溃的情况下,可以获取操作系统发生崩溃的线程对应的调用栈信息,并基于调用栈信息,生成所述系统崩溃信息。
示例性的,可以通过操作系统上运行崩溃检测程序,获取发生崩溃的目标进程的进程名,目标进程的进程名即为目标标识信息,然后基于调用栈信息中的特征生成系统崩溃信息的摘要信息,最后,生成包含发生崩溃的进程的目标标识信息、上述摘要信息及上述调用栈信息的系统崩溃信息。
可选的,内核崩溃是指发生在内核的崩溃,若操作系统崩溃为内核崩溃时,所述系统崩溃信息从因内核崩溃重启之前的内核运行日志信息中获取。
其中,内核运行日志是用来记录操作系统中内核问题的信息,同时还可以监视系统中发生的事件,可用来检查崩溃发生的原因或寻找受到攻击时攻击者留下的痕迹。若所述系统崩溃信息为是基于所述内核运行日志信息生成的,则所述系统崩溃信息中指示的崩溃类型为内核崩溃。
具体的,在所述崩溃为内核崩溃的情况下,可以获取所述操作系统在因内核崩溃重启之前的内核运行日志信息;然后,基于所述内核运行日志信息,生成所述系统崩溃信息。
具体的,所述基于所述内核运行日志信息,生成所述系统崩溃信息,包括:
通过从上到下遍历所述内核运行日志中回溯堆栈的代码行,将提取的信息作为所述系统崩溃信息。
S102:针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征。
在所述系统崩溃信息为基于所述调用栈信息生成的情况下,可以从所述系统崩溃信息中提取出崩溃进程的目标标识信息、所述系统崩溃信息的摘要信息以及所述目标进程的调用信息,作为所述崩溃特征。
进一步的,从排除地址信息干扰的所述目标进程的调用信息中,提取出所述目标进程调用的目标对象的类名、所述目标对象的方法名以及所述目标对象对应的持锁信息。
其中,锁是用来在多线程运行过程中合理分配资源的,持锁是指某线程正在占用某资源。
需要注意的是,由于调用信息中的持锁信息通常包含持锁对象对应的内存地址,而持锁对象在内存中的地址会发生变化,在发生变化的情况下,若仍利用内存地址进行聚类,相同类型的问题会被聚类为不同类型的问题,因此,可以将持锁对象的地址信息删除,从而排除了地址信息对特征标识的影响。
示例性的,若所述系统崩溃信息为基于所述内核运行日志信息生成的时,可以通过以下步骤从所述系统崩溃信息中提取崩溃特征:
在所述系统崩溃信息为基于所述内核运行日志信息生成的情况下,确定所述系统崩溃信息中指示的崩溃类型信息,然后确定与所述崩溃类型信息匹配的正则表达式,根据所述正则表达式,从所述系统崩溃信息中提取崩溃原因信息,再从所述系统崩溃信息中提取出发生崩溃时的待执行指令信息以及发生异常的内存地址信息;最后,将提取出的所述崩溃类型信息、所述崩溃原因信息、所述待执行指令信息以及所述内存地址信息作为所述崩溃特征。
具体的,根据自定义崩溃类型,内核崩溃的崩溃类型包括KE(内核崩溃)类型和非KE类型;对于KE类型,崩溃类型信息取值可能为KE(内核异常)、JE(Java异常)和NE(native异常);对于非KE类型,崩溃类型信息取值可能为HWT、HW_REBOOT、THERMAL_REBOOT、OCP、SPAR、UVLO、HANG_DETECT等。
在确定了所述系统崩溃信息的崩溃类型后,确定与所述崩溃类型信息匹配的正则表达式,利用所述正则表达式,从所述系统崩溃信息中提取崩溃原因信息。
其中,对于KE类型,所述崩溃原因信息的崩溃类型信息取值有以下五种情况:
1、kernel bug on(崩溃发生的位置)问题利用正则表达式使用字段kernel BUGat作为句柄提取崩溃原因信息,用于常见崩溃信息原因的提取;
2、virtual address(虚拟地址)问题利用正则表达式使用字段Unable to handlekernel paging request at virtual address(无法在虚拟地址处理内核分页请求)作为句柄提取崩溃原因信息,用于虚拟地址异常信息的提取;
3、null pointer(空指针)问题利用正则表达式使用字段Unable to handlekernel NULL pointer dereference at virtual address(无法在虚拟地址处理空指针引用)作为句柄提取崩溃原因信息,用于误用指针引起异常信息的提取;
4、sysrq-trigger(系统请求触发器)问题利用正则表达式使用字段sysrq(系统请求)作为句柄提取崩溃原因信息,用于系统出现难重现异常时异常信息的提取;
5、其他问题直接使用字段exception_info(所述崩溃信息)中的信息作为崩溃原因信息。
对于非KE问题,直接使用字段exception_info(所述崩溃信息)中的信息作为崩溃原因信息。
S103:基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识。
示例性的,可以先确定所述崩溃特征的信息摘要值,然后将所述信息摘要值作为所述系统崩溃信息对应的特征标识。
其中,信息摘要值可以通过信息摘要算法(Message-Digest Algorithm,MD5)确定,这是一种密码散列函数,可以产生出一个128位(16字节)的散列值,通常用于确保信息传输完整一致,具体来说,将多个字符串输入,通过MD5算法,可以获得一串对应的固定值,也就是说,输入相同特征的字符串,就会获得相同的特征标识,因此,使用MD5信息摘要算法来确定信息摘要值,可以将具有相同特征的系统崩溃信息归为一类,提高崩溃信息分类效率。
S104:基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。
具体的,所述系统崩溃信息组中包括一条或一条以上具有相同或相似特征标识的操作系统崩溃信息。
其中,所述相同或相似特征标识通过MD5信息摘要算法来确定:提取常见操作系统崩溃信息特征标识(一个128位的散列值),设定第一阈值。若操作系统崩溃信息通过MD5信息摘要算法确定的特征标识,在某常见操作系统崩溃信息特征标识的第一阈值内,则该操作系统崩溃信息属于归为该常见操作系统崩溃信息组。这样可以将大量的操作系统崩溃信息进行分类,减少开发人员要处理的操作系统崩溃信息量。
本公开实施例提供的崩溃聚类方法,获取多条在操作系统发生崩溃后生成的系统崩溃信息;针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征;基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识;基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。本公开实施例基于系统崩溃信息的类型,从系统崩溃信息中提取崩溃特征,崩溃特征能够体现系统崩溃信息中关于崩溃的特征点,具有代表性,由崩溃特征生成的特征标识能够对崩溃特征的特征进行表征,因此,崩溃标识能够体现崩溃的各种特征,实现了对崩溃高度概括,不直接对系统崩溃信息进行聚类,而是对特征标识的聚类,能够将大量的无关信息剔除,在保留各种与崩溃相关的特征的前提下,提高聚类效率,减少问题种类便于开发者查看和修正。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与崩溃聚类方法对应的崩溃聚类装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述崩溃聚类方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图2所示,为本公开实施例提供的一种崩溃聚类装置的示意图,所述装置包括:
获取模块201,用于获取多条在操作系统发生崩溃后生成的系统崩溃信息;
提取模块202,用于针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征;
计算模块203,用于基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识;
归类模块204,用于基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。
本公开实施例中,基于系统崩溃信息的类型,从系统崩溃信息中提取崩溃特征,崩溃特征能够体现系统崩溃信息中关于崩溃的特征点,具有代表性,由崩溃特征生成的特征标识能够对崩溃特征的特征进行表征,因此,崩溃标识能够体现崩溃的各种特征,实现了对崩溃高度概括,不直接对系统崩溃信息进行聚类,而是对特征标识的聚类,能够将大量的无关信息剔除,在保留各种与崩溃相关的特征的前提下,提高聚类效率,减少问题种类便于开发者查看和修正。
一种可选的实施方式中,所述操作系统发生的崩溃包括线程崩溃;
所述获取模块201在获取多条在操作系统发生崩溃后生成的系统崩溃信息时,用于:
获取所述操作系统中发生崩溃的线程对应的调用栈信息;
基于所述调用栈信息,生成所述系统崩溃信息。
一种可选的实施方式中,所述提取模块202在基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征时,用于:
在所述系统崩溃信息为基于所述调用栈信息生成的情况下,从所述系统崩溃信息中提取出崩溃进程的目标标识信息、所述系统崩溃信息的摘要信息以及所述目标进程的调用信息,作为所述崩溃特征。
一种可选的实施方式中,所述提取模块202在从所述系统崩溃信息中提取出所述目标进程的调用信息时,用于:
从所述系统崩溃信息中,提取出所述目标进程调用的目标对象的类名、所述目标对象的方法名以及所述目标对象对应的持锁信息。
一种可选的实施方式中,所述操作系统发生的崩溃包括内核崩溃;
所述获取模块201在获取多条在操作系统发生崩溃后生成的系统崩溃信息时,用于:
获取所述操作系统在因内核崩溃重启之前的内核运行日志信息;
基于所述内核运行日志信息,生成所述系统崩溃信息。
一种可选的实施方式中,所述提取模块202在基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征时,用于:
在所述系统崩溃信息为基于所述内核运行日志信息生成的情况下,确定所述系统崩溃信息中指示的崩溃类型信息;
确定与所述崩溃类型信息匹配的正则表达式;
利用所述正则表达式,从所述系统崩溃信息中提取崩溃原因信息;
从所述系统崩溃信息中提取出发生崩溃时的待执行指令信息以及发生异常的内存地址信息;
将所述崩溃类型信息、所述崩溃原因信息、所述待执行指令信息以及所述内存地址信息作为所述崩溃特征。
一种可选的实施方式中,所述计算模块203在基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识时,用于:
确定所述崩溃特征的信息摘要值,并将所述信息摘要值作为所述系统崩溃信息对应的特征标识。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的崩溃聚类方法,本公开实施例还提供了一种电子设备300,如图3所示,为本公开实施例提供的电子设备300结构示意图,包括:
处理器31、存储器32、和总线33;存储器32用于存储执行指令,包括内存321和外部存储器322;这里的内存321也称内存储器,用于暂时存放处理器31中的运算数据,以及与硬盘等外部存储器322交换的数据,处理器31通过内存321与外部存储器322进行数据交换,当所述电子设备300运行时,所述处理器31与所述存储器32之间通过总线33通信,使得所述处理器31执行以下指令:
获取多条在操作系统发生崩溃后生成的系统崩溃信息;
针对每条系统崩溃信息,基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征;
基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识;
基于所述特征标识,对所述多条系统崩溃信息进行聚类,得到至少一种崩溃原因对应的系统崩溃信息组。
一种可能的实施方案中,所述处理器31执行的指令中,所述操作系统发生的崩溃包括线程崩溃;
所述获取多条在操作系统发生崩溃后生成的系统崩溃信息,包括:
获取所述操作系统中发生崩溃的线程对应的调用栈信息;
基于所述调用栈信息,生成所述系统崩溃信息。
一种可能的实施方案中,所述处理器31执行的指令中,所述基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征,包括:
在所述系统崩溃信息为基于所述调用栈信息生成的情况下,从所述系统崩溃信息中提取出崩溃进程的目标标识信息、所述系统崩溃信息的摘要信息以及所述目标进程的调用信息,作为所述崩溃特征。
一种可能的实施方案中,所述处理器31执行的指令中,从所述系统崩溃信息中提取出所述目标进程的调用信息,包括:
从所述系统崩溃信息中,提取出所述目标进程调用的目标对象的类名、所述目标对象的方法名以及所述目标对象对应的持锁信息。
一种可能的实施方案中,所述处理器31执行的指令中,所述操作系统发生的崩溃包括内核崩溃;
所述获取多条在操作系统发生崩溃后生成的系统崩溃信息,包括:
获取所述操作系统在因内核崩溃重启之前的内核运行日志信息;
基于所述内核运行日志信息,生成所述系统崩溃信息。
一种可能的实施方案中,所述处理器31执行的指令中,所述基于所述系统崩溃信息的类型,从所述系统崩溃信息中提取崩溃特征,包括:
在所述系统崩溃信息为基于所述内核运行日志信息生成的情况下,确定所述系统崩溃信息中指示的崩溃类型信息;
确定与所述崩溃类型信息匹配的正则表达式;
利用所述正则表达式,从所述系统崩溃信息中提取崩溃原因信息;
从所述系统崩溃信息中提取出发生崩溃时的待执行指令信息以及发生异常的内存地址信息;
将所述崩溃类型信息、所述崩溃原因信息、所述待执行指令信息以及所述内存地址信息作为所述崩溃特征。
一种可能的实施方案中,所述处理器31执行的指令中,所述基于所述崩溃特征,生成所述系统崩溃信息对应的特征标识,包括:
确定所述崩溃特征的信息摘要值,并将所述信息摘要值作为所述系统崩溃信息对应的特征标识。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的崩溃聚类方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的崩溃聚类方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。