一种故障检测方法、装置、电子设备及存储介质制造方法及图纸

技术编号:34913009 阅读:15 留言:0更新日期:2022-09-15 07:02
本公开关于一种故障检测方法、装置、电子设备及存储介质,涉及计算机技术领域。具体方案包括:目标应用启动后,建立目标应用的监控线程;当通过监控线程确定目标应用的主线程发生故障时,结束多个线程的运行,多个线程包括主线程和目标应用的子线程中除监控线程外的其他子线程;获取多个线程中每个线程的堆栈;根据每个线程的堆栈和目标应用对应的目标系统符号,从主线程开始检测,确定故障信息,故障信息包括多个线程中发生故障的线程、线程的故障类型,以及发生故障的线程之间的等待关系。本公开能够快速定位应用运行过程中的卡顿问题,且能够提高问题检测的全面性和准确性。且能够提高问题检测的全面性和准确性。且能够提高问题检测的全面性和准确性。

【技术实现步骤摘要】
一种故障检测方法、装置、电子设备及存储介质


[0001]本公开涉及计算机
,尤其涉及一种故障检测方法、装置、电子设备及存储介质。

技术介绍

[0002]电子设备的应用在运行过程中,可能会由于各种各样的问题发生卡顿。该应用的卡顿时长达到卡顿阈值时,电子设备停止运行该应用,这样会使得用户的使用体验较差。因此,当应用在运行过程中发生卡顿时,电子设备需要快速、全面地定位发生卡顿的原因,并向服务器上传卡顿原因,以便于工作人员对该应用进行优化,从而减少卡顿问题的发生。但是,相关技术中仅能定位出由某种固化的原因导致的卡顿问题,这种方式定位出的原因不够全面,使得卡顿检测的准确性较低。

技术实现思路

[0003]本公开提供一种故障检测方法、装置、电子设备及存储介质,能够快速定位应用运行过程中的卡顿问题,且能够提高问题检测的全面性和准确性。
[0004]本公开的技术方案如下:
[0005]根据本公开的第一方面,提供一种故障检测方法,该方法包括:
[0006]目标应用启动后,建立目标应用的监控线程;
[0007]当通过监控线程确定目标应用的主线程发生故障时,结束多个线程的运行,多个线程包括主线程和目标应用的子线程中除监控线程外的其他子线程;
[0008]获取多个线程中每个线程的堆栈;
[0009]根据每个线程的堆栈和目标应用对应的目标系统符号,从主线程开始检测,确定故障信息,故障信息包括多个线程中发生故障的线程、线程的故障类型,以及发生故障的线程之间的等待关系。
>[0010]可选的,根据每个线程的堆栈和目标应用对应的目标系统符号,从主线程开始检测,确定故障信息,包括:
[0011]根据主线程的堆栈和目标系统符号,确定主线程的故障类型;
[0012]根据所述主线程、所述主线程的故障类型,确定所述故障信息。
[0013]可选的,所述根据所述主线程、所述主线程的故障类型,确定所述故障信息,包括:
[0014]若主线程的故障类型包括第一类型,则根据主线程和主线程的故障类型确定故障信息,第一类型用于指示故障与目标应用的子线程不相关;
[0015]和/或,
[0016]若主线程的故障类型包括第二类型,则根据主线程的堆栈获取与主线程故障相关的目标子线程,第二类型用于指示故障与目标应用的子线程相关;根据目标子线程的堆栈和目标系统符号,确定目标子线程的故障类型;根据主线程、主线程的故障类型、目标子线程,以及目标子线程的故障类型确定故障信息。
[0017]可选的,根据主线程、主线程的故障类型、目标子线程,以及目标子线程的故障类型确定故障信息,包括:
[0018]若目标子线程的故障类型包括第一类型,则根据主线程、主线程的故障类型、目标子线程和目标子线程的故障类型确定故障信息;
[0019]和/或,
[0020]若目标子线程的故障类型包括第二类型,则根据目标子线程的堆栈确定与目标子线程故障相关的子线程,以此循环,直至确定出故障信息。
[0021]可选的,根据主线程的堆栈和目标系统符号,确定主线程的故障类型,包括:
[0022]获取预存的多个故障类型和与多个故障类型一一对应的多个预设位置,多个故障类型包括第一类型和第二类型,预设位置用于指示栈帧在堆栈中的位置;
[0023]根据目标系统符号,对主线程的堆栈的每个预设位置的栈帧进行符号化,得到每个预设位置的栈帧对应的函数标识;
[0024]根据每个预设位置的栈帧对应的函数标识,确定主线程是否发生预设位置对应的故障类型的故障。
[0025]可选的,目标应用启动后,建立目标应用的监控线程,包括:
[0026]目标应用启动后,获取目标应用对应的开关配置信息,开关配置信息用于指示是否开启目标应用的故障检测;
[0027]若所述开关配置信息用于指示开启故障检测,则建立所述监控线程。
[0028]可选的,若所述开关配置信息用于指示开启故障检测,则建立所述监控线程,包括:
[0029]若开关配置信息用于指示开启故障检测,且本地存储有目标系统符号,则建立监控线程;
[0030]或者,
[0031]若开关配置信息用于指示开启故障检测,本地未存储有目标系统符号,则从服务器获取多个初始系统符号,在解析到多个初始系统符号中每个初始系统符号的开始地址和结束地址后,建立监控线程。
[0032]可选的,故障检测方法还包括:
[0033]根据每个初始系统符号,以及每个初始系统符号对应的偏移量,确定每个初始系统符号对应的目标系统符号;
[0034]存储目标系统符号。
[0035]可选的,通过监控线程确定目标应用的主线程发生故障,包括:
[0036]通过监控线程,获取主线程的事件循环机制的状态信息;
[0037]在确定状态信息在预设时间段内未发生变更时,确定主线程发生故障,预设时间段小于卡顿阈值。
[0038]根据本公开的第二方面,提供一种故障检测装置,包括:
[0039]建立模块,被配置为执行目标应用启动后,建立目标应用的监控线程;
[0040]结束模块,被配置为执行当通过建立模块建立的监控线程确定目标应用的主线程发生故障时,结束多个线程的运行,多个线程包括主线程和目标应用的子线程中除监控线程外的其他子线程;
[0041]获取模块,被配置为执行获取多个线程中每个线程的堆栈;
[0042]确定模块,被配置为执行根据每个线程的堆栈和目标应用对应的目标系统符号,从主线程开始检测,确定故障信息,故障信息包括多个线程中发生故障的线程、线程的故障类型,以及发生故障的线程之间的等待关系。
[0043]可选的,确定模块,具体被配置为执行:
[0044]根据主线程的堆栈和目标系统符号,确定主线程的故障类型;
[0045]根据所述主线程、所述主线程的故障类型,确定所述故障信息。
[0046]可选的,确定模块,具体被配置为执行:
[0047]若主线程的故障类型包括第一类型,则根据主线程和主线程的故障类型确定故障信息,第一类型用于指示故障与目标应用的子线程不相关;
[0048]和/或,
[0049]若主线程的故障类型包括第二类型,则根据主线程的堆栈获取与主线程故障相关的目标子线程,第二类型用于指示故障与目标应用的子线程相关;根据目标子线程的堆栈和目标系统符号,确定目标子线程的故障类型;根据主线程、主线程的故障类型、目标子线程,以及目标子线程的故障类型确定故障信息。
[0050]可选的,确定模块,具体被配置为执行:
[0051]若目标子线程的故障类型包括第一类型,则根据主线程、主线程的故障类型、目标子线程和目标子线程的故障类型确定故障信息;
[0052]和/或,
[0053]若目标子线程的故障类型包括第二类型,则根据目标子线程的堆栈确定与目标子线程故障相关的子线程,以此循环,直至确定出故障信息本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种故障检测方法,其特征在于,包括:目标应用启动后,建立所述目标应用的监控线程;当通过所述监控线程确定所述目标应用的主线程发生故障时,结束多个线程的运行,所述多个线程包括所述主线程和所述目标应用的子线程中除所述监控线程外的其他子线程;获取所述多个线程中每个线程的堆栈;根据每个线程的堆栈和所述目标应用对应的目标系统符号,从所述主线程开始检测,确定故障信息,所述故障信息包括所述多个线程中发生故障的线程、所述线程的故障类型,以及发生故障的线程之间的等待关系。2.根据权利要求1所述的故障检测方法,其特征在于,所述根据每个线程的堆栈和所述目标应用对应的目标系统符号,从所述主线程开始检测,确定故障信息,包括:根据所述主线程的堆栈和所述目标系统符号,确定所述主线程的故障类型;根据所述主线程、所述主线程的故障类型,确定所述故障信息。3.根据权利要求2所述的故障检测方法,其特征在于,所述根据所述主线程、所述主线程的故障类型,确定所述故障信息,包括:若所述主线程的故障类型包括第一类型,则根据所述主线程和所述主线程的故障类型确定所述故障信息,所述第一类型用于指示故障与所述目标应用的子线程不相关;和/或,若所述主线程的故障类型包括第二类型,则根据所述主线程的堆栈获取与所述主线程故障相关的目标子线程,所述第二类型用于指示故障与所述目标应用的子线程相关;根据所述目标子线程的堆栈和所述目标系统符号,确定所述目标子线程的故障类型;根据所述主线程、所述主线程的故障类型、所述目标子线程,以及所述目标子线程的故障类型确定所述故障信息。4.根据权利要求3所述的故障检测方法,其特征在于,所述根据所述主线程、所述主线程的故障类型、所述目标子线程,以及所述目标子线程的故障类型确定所述故障信息,包括:若所述目标子线程的故障类型包括所述第一类型,则根据所述主线程、所述主线程的故障类型、所述目标子线程和所述目标子线程的故障类型确定所述故障信息;和/或,若所述目标子线程的故障类型包括所述第二类型,则根据所述目标子线程的堆栈确定与所述目标子线程故障相关的子线程,以此循环,直至确定出所述故障信息。5.根据权利要求2

4中任一项所述的故障检测方法,其特征在于,所述根据所述主线程的堆栈和所述目标系统符号,确定所述主线程的故障类型,包括:获取预存的多个故障类型和与所述多个故障类型一一对应的多个预设位置,所述多个故障类型包括第一类型和第二类型,预设位置用于指示栈帧在堆栈中的位置;根据所述目标系统符号,对所述主线程的堆栈的每个预设位置的栈帧进行符号化,得到每个预设位置的栈帧对应的函数标识;根据每个预设位置的栈帧对应的函数标识,确定所述主线程是否发生所述预设位置对应的故障类型的故障。
6.根据权利要求1

4中任...

【专利技术属性】
技术研发人员:刘俊龙
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1