发布信息

应用程序无响应的分析方法、装置、电子设备及存储介质与流程 专利技术说明

作者:admin      2022-12-02 16:40:19     397



计算;推算;计数设备的制造及其应用技术1.本技术涉及计算机技术领域,尤其涉及一种应用程序无响应的分析方法、装置、电子设备及存储介质。背景技术:2.anr(application not response,应用程序无响应)是指应用程序在一段时间内响应不够灵敏。相关技术中,可以使用经验或者推测的方式分析应用程序无响应的原因。然而,使用经验的方式对开发人员处理anr的经验要求比较高,业务理解的要求也比较深刻,而使用推测的方式需要做各种验证,比较耗时。技术实现要素:3.为了解决上述技术问题,本技术提供了一种应用程序无响应的分析方法、装置、电子设备及存储介质。4.根据本技术的第一方面,提供了一种应用程序无响应的分析方法,包括:5.在向目标应用程序发送待处理消息后,获取所述目标应用程序的线程所执行的第一时长;6.在目标应用程序对应的消息处理时长内,如果未接收到所述目标应用程序返回的响应消息,获取所述目标应用程序的线程所执行的第二时长;7.将所述第二时长和所述第一时长的差值,确定为所述目标应用程序的线程在所述消息处理时长内的实际cpu(中央处理器)占用时长;8.根据所述实际cpu占用时长和所述消息处理时长,确定所述目标应用程序获取cpu资源的难度等级;9.如果所述难度等级属于第一等级,确定所述目标应用程序无响应的原因属于操作系统cpu资源紧张;10.如果所述难度等级属于第二等级,确定所述目标应用程序无响应的原因属于操作系统cpu资源紧张,或者属于所述目标应用程序自身问题;11.如果所述难度等级属于第三等级,确定所述目标应用程序无响应的原因属于所述目标应用程序自身问题,其中,所述第一等级、所述第二等级和所述第三等级依次降低。12.可选的,所述根据所述实际cpu占用时长和所述消息处理时长,确定所述目标应用程序获取cpu资源的难度等级,包括:13.根据所述消息处理时长,确定第一目标时长和第二目标时长;其中,所述第一目标时长大于等于所述第二目标时长,且所述第一目标时长和所述第二目标时长均小于所述消息处理时长;14.如果所述实际cpu占用时长大于所述第一目标时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第三等级;15.如果所述实际cpu占用时长小于所述第二目标时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第一等级;16.如果所述实际cpu占用时长大于等于所述第二目标时长,且小于等于所述第一目标时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第二等级。17.可选的,所述根据所述消息处理时长,确定第一目标时长和第二目标时长,包括:18.将所述消息处理时长与第一预设系数相乘,得到第一目标时长;19.将所述消息处理时长与第二预设系数相乘,得到第二目标时长;其中,所述第一预设系数大于等于所述第二预设系数。20.可选的,所述根据所述实际cpu占用时长和所述消息处理时长,确定所述目标应用程序获取cpu资源的难度等级,包括:21.获取预先建立的时长范围和预设时长的对应关系,基于所述对应关系,确定所述消息处理时长所属的时长范围对应的目标时长阈值;22.如果所述实际cpu占用时长大于所述预设时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第三等级;23.如果所述实际cpu占用时长小于所述预设时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第一等级;24.如果所述实际cpu占用时长等于所述预设时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第二等级。25.可选的,所述如果向所述目标应用程序发送目标消息的时刻为第一时刻,接收所述目标应用针对所述目标消息返回的响应消息的时刻为第二时刻,则所述消息处理时长为所述第二时刻和所述第一时刻的时间差。26.可选的,所述待处理消息为广播消息,在向目标应用程序发送待处理消息之前,所述方法还包括:27.接收第一应用程序发送的所述广播消息;28.向目标应用程序发送待处理消息,包括:29.将所述广播消息广播发送至多个第二应用程序,其中,所述多个第二应用程序均为目标应用程序。30.可选的,所述将所述广播消息广播发送至多个第二应用程序,包括:31.根据所述广播消息的标识信息,查找所述广播消息对应的多个第二应用程序;32.将所述广播消息广播发送至所述多个第二应用程序。33.可选的,所述方法还包括:34.在所述消息处理时长内,如果未接收到所述目标应用程序返回的响应消息,则杀掉所述目标应用程序的线程。35.根据本技术的第二方面,提供了一种应用程序无响应的分析装置,包括:36.第一时长获取模块,用于在向目标应用程序发送待处理消息后,获取所述目标应用程序的线程所执行的第一时长;37.第二时长获取模块,用于在目标应用程序对应的消息处理时长内,如果未接收到所述目标应用程序返回的响应消息,获取所述目标应用程序的线程所执行的第二时长;38.实际占用时长确定模块,用于将所述第二时长和所述第一时长的差值,确定为所述目标应用程序的线程在所述消息处理时长内的实际cpu占用时长;39.难度等级确定模块,用于根据所述实际cpu占用时长和所述消息处理时长,确定所述目标应用程序获取cpu资源的难度等级;40.目标应用程序无响应原因确定模块,用于如果所述难度等级属于第一等级,确定所述目标应用程序无响应的原因属于操作系统cpu资源紧张;如果所述难度等级属于第二等级,确定所述目标应用程序无响应的原因属于操作系统cpu资源紧张,或者属于所述目标应用程序自身问题;如果所述难度等级属于第三等级,确定所述目标应用程序无响应的原因属于所述目标应用程序自身问题,其中,所述第一等级、所述第二等级和所述第三等级依次降低。41.可选的,所述难度等级确定模块,具体用于根据所述消息处理时长,确定第一目标时长和第二目标时长;其中,所述第一目标时长大于等于所述第二目标时长,且所述第一目标时长和所述第二目标时长均小于所述消息处理时长;如果所述实际cpu占用时长大于所述第一目标时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第三等级;如果所述实际cpu占用时长小于所述第二目标时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第一等级;如果所述实际cpu占用时长大于等于所述第二目标时长,且小于等于所述第一目标时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第二等级。42.可选的,所述目标应用程序无响应原因确定模块,具体用于通过下述步骤实现根据所述消息处理时长,确定第一目标时长和第二目标时长:43.将所述消息处理时长与第一预设系数相乘,得到第一目标时长;44.将所述消息处理时长与第二预设系数相乘,得到第二目标时长;其中,所述第一预设系数大于等于所述第二预设系数。45.可选的,所述难度等级确定模块,具体用于获取预先建立的时长范围和预设时长的对应关系,基于所述对应关系,确定所述消息处理时长所属的时长范围对应的目标时长阈值;如果所述实际cpu占用时长大于所述预设时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第三等级;如果所述实际cpu占用时长小于所述预设时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第一等级;如果所述实际cpu占用时长等于所述预设时长,确定所述目标应用程序获取cpu资源的难度等级属于所述第二等级。46.可选的,所述如果向所述目标应用程序发送目标消息的时刻为第一时刻,接收所述目标应用针对所述目标消息返回的响应消息的时刻为第二时刻,则所述消息处理时长为所述第二时刻和所述第一时刻的时间差。47.可选的,所述待处理消息为广播消息,所述应用程序无响应的分析装置,还包括:48.广播消息接收模块,用于接收第一应用程序发送的所述广播消息;49.广播消息发送模块,用于将所述广播消息广播发送至多个第二应用程序,其中,所述多个第二应用程序均为目标应用程序。50.可选的,所述广播消息发送模块,具体用于根据所述广播消息的标识信息,查找所述广播消息对应的多个第二应用程序,将所述广播消息广播发送至所述多个第二应用程序。51.可选的,所述应用程序无响应的分析装置,还包括:52.线程消灭模块,用于在所述消息处理时长内,如果未接收到所述目标应用程序返回的响应消息,则杀掉所述目标应用程序的线程。53.根据本技术的第三方面,提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面所述的应用程序无响应的分析方法。54.根据本技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的应用程序无响应的分析方法。55.根据本技术的第五方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面所述的应用程序无响应的分析方法。56.本技术实施例提供的技术方案与现有技术相比具有如下优点:57.在向目标应用程序发送待处理消息后,可以获取目标应用程序的线程所执行的第一时长,也就是,在应用程序开始处理待处理消息时就获取一次目标应用程序的线程所执行的第一时长。在目标应用程序对应的消息处理时长内,如果未接收到目标应用程序返回的响应消息,表示发生目标应用程序无响应。此时,获取目标应用程序的线程所执行的第二时长。将第二时长和第一时长的差值,确定为目标应用程序的线程在消息处理时长内的实际cpu占用时长,根据实际cpu占用时长和该消息处理时长,可以了解目标应用程序获取cpu资源的难度等级,从而确定目标应用程序无响应的原因。例如,难度等级越高,越有可能属于操作系统cpu资源紧张的问题;难度等级越低,越有可能属于目标应用程序自身问题。可以看出,该方法简单、清晰,不需要开发人员的经验即可确定目标应用程序无响应的原因。并且,由于获取目标应用程序的线程所执行的第一时长和第二时长并不消耗cpu资源,因此,可以采用较小的资源消耗,快速分析目标应用程序无响应的原因,从而简化anr问题的分析流程。附图说明58.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。59.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。60.图1为相关技术中发生应用程序无响应时获取快照信息的一种示意图;61.图2示出了可以应用于本技术实施例的应用程序无响应的分析方法的示例性应用环境的系统架构的示意图;62.图3为本技术实施例中应用程序无响应的分析方法的一种流程图;63.图4为本技术实施例中发生应用程序无响应时获取应用程序的线程所执行的第一时长和第二时长的一种示意图;64.图5为本技术实施例中应用程序无响应的分析装置的一种结构示意图;65.图6为本技术实施例中电子设备的一种结构示意图。具体实施方式66.为了能够更清楚地理解本技术的上述目的、特征和优点,下面将对本技术的方案进行进一步描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。67.在下面的描述中阐述了很多具体细节以便于充分理解本技术,但本技术还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本技术的一部分实施例,而不是全部的实施例。68.目前,很多关于应用程序稳定性的bug(例如应用程序发生anr),面临着应用程序与操作系统责任不清晰的问题。在发生anr时可以dump应用程序的快照信息,其中,快照信息指应用程序当前时刻的状态数据,包括运行堆栈、操作系统资源使用情况等。图1为相关技术中发生应用程序无响应时获取快照信息的一种示意图。假设应用程序在时刻a接收到操作系统发送的待处理消息,在应用程序对应的消息处理时长内,即在时刻b到达时,操作系统未接收到应用程序返回的响应消息,即应用程序未对该待处理消息做出响应,此时即发生了应用程序无响应。那么,可以获取时刻b的快照信息,以获取应用程序的线程在该时刻b的运行状态。然而,根据快照信息无法判断是由于应用程序业务耗时、还是由于操作系统资源紧张使应用程序抢不到资源而导致发生anr。69.相关技术中,可以在代码中增加一些log(日志信息)来识别是应用程序导致的bug,还是操作系统导致的bug,虽然可以降低分析应用程序无响应的耗时,但是,分析应用程序无响应仍然需要一定的耗时,并且需要耗费较多的日志资源。为了解决上述问题,本技术实施例提供了一种应用程序无响应的分析方法、装置、电子设备及存储介质,以利用最小的资源消耗,快速分析应用程序无响应的原因。70.以下首先对本技术实施例的应用程序无响应的分析方法进行介绍。71.图2示出了可以应用于本技术实施例的应用程序无响应的分析方法的示例性应用环境的系统架构的示意图。72.如图2所示,系统架构100可以包括应用程序101、应用程序103、应用程序104中的两个或三个,网络和操作系统102。网络用以在应用程序101、应用程序103、应用程序104和操作系统102之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。操作系统102为终端设备中的操作系统,例如可以是安卓操作系统,应用程序101、应用程序103、应用程序104可以是终端设备中的应用程序。应该理解,图1中的应用程序的数量仅仅是示意性的,例如根据实现需要,可以具有更多数量个应用程序。73.本技术实施例所提供的应用程序无响应的分析方法一般由操作系统102执行,相应地,应用程序无响应的分析装置可以设置于操作系统102中。举例而言,操作系统102可以接收应用程序101发送的广播消息,通过对该广播消息进行分析,确定向应用程序103、应用程序104发送该广播消息。在正常情况下,在应用程序103、应用程序104分别对应的消息处理时长内,应用程序103、应用程序104分别可以对该广播消息进行响应,并向操作系统102回复响应消息。在异常情况下,即在发生应用程序无响应时,应用程序103、应用程序104无法响应该广播消息。74.本技术实施例中,在操作系统102向应用程序103、应用程序104发送该广播消息时,可以分别获取应用程序103的线程所执行的第一时长,以及应用程序104的线程所执行的第一时长,在发生应用程序无响应时,再分别获取应用程序103的线程所执行的第二时长,以及应用程序104的线程所执行的第二时长。根据应用程序103的线程所执行的第二时长和第一时长,确定应用程序103的线程在消息处理时长内的实际cpu占用时长,根据该实际cpu占用时长和消息处理时长,确定应用程序103无响应的原因。75.同样地,可以根据应用程序104的线程所执行的第二时长和第一时长,确定应用程序104的线程在消息处理时长内的实际cpu占用时长,根据该实际cpu占用时长和消息处理时长,确定目标应用程序获取cpu资源的难度等级,进而确定应用程序104无响应的原因。在此过程中,不需要开发人员的经验即可确定应用程序103和应用程序104无响应的原因,并且,由于获取应用程序103的线程所执行的第一时长和第二时长、以及应用程序104的线程所执行的第一时长和第二时长并不消耗cpu资源,因此,可以采用较小的资源消耗,快速分析应用程序103和应用程序104无响应的原因,从而简化anr问题的分析流程。76.本技术实施例的应用程序无响应的分析方法的执行主体可以是终端设备的操作系统,例如,针对安卓智能手机或平板电脑,对应的执行主体可以是安卓操作系统;针对台式计算机或便携式计算机等,对应的执行主体可以是windows操作系统等。77.参见图3,图3为本技术实施例中应用程序无响应的分析方法的一种流程图,可以包括以下步骤:78.步骤s310,在向目标应用程序发送待处理消息后,获取目标应用程序的线程所执行的第一时长。79.步骤s320,在目标应用程序对应的消息处理时长内,如果未接收到目标应用程序返回的响应消息,获取目标应用程序的线程所执行的第二时长。80.步骤s330,将第二时长和第一时长的差值,确定为目标应用程序的线程在该消息处理时长内的实际cpu占用时长。81.步骤s340,根据实际cpu占用时长和消息处理时长,确定目标应用程序获取cpu资源的难度等级。82.步骤s350,如果难度等级属于第一等级,确定目标应用程序无响应的原因属于操作系统cpu资源紧张。83.步骤s360,如果难度等级属于第二等级,确定目标应用程序无响应的原因属于操作系统cpu资源紧张,或者属于目标应用程序自身问题。84.步骤s370,如果难度等级属于第三等级,确定目标应用程序无响应的原因属于目标应用程序自身问题,其中,第一等级、第二等级和第三等级依次降低。85.本技术实施例的应用程序无响应的分析方法,操作系统在向目标应用程序发送待处理消息后,可以获取目标应用程序的线程所执行的第一时长,也就是,在应用程序开始处理待处理消息时就获取一次目标应用程序的线程所执行的第一时长。在目标应用程序对应的消息处理时长内,如果未接收到目标应用程序返回的响应消息,表示发生目标应用程序无响应。此时,获取目标应用程序的线程所执行的第二时长。将第二时长和第一时长的差值,确定为目标应用程序的线程在消息处理时长内的实际cpu占用时长,根据实际cpu占用时长和该消息处理时长,可以了解目标应用程序获取cpu资源的难度等级,从而确定目标应用程序无响应的原因。例如,难度等级越高,越有可能属于操作系统cpu资源紧张的问题;难度等级越低,越有可能属于目标应用程序自身问题。可以看出,该方法简单、清晰,不需要开发人员的经验即可确定目标应用程序无响应的原因。并且,由于获取目标应用程序的线程所执行的第一时长和第二时长并不消耗cpu资源,因此,可以采用较小的资源消耗,快速分析目标应用程序无响应的原因,从而简化anr问题的分析流程。86.以下对本技术实施例的应用程序无响应的分析方法进行更加详细的介绍。87.在步骤s310中,在向目标应用程序发送待处理消息后,获取目标应用程序的线程所执行的第一时长。88.目标应用程序是终端设备中安装的应用程序,可以是其中任意一种应用程序,用户可以对目标应用程序进行操作。待处理消息可以是用户对目标应用程序执行操作时生成的触发事件,或者,待处理消息还可以是接收自其它应用程序的消息等等。具体而言,在用户对目标应用程序操作时,会产生相应的触发事件,操作系统可以接收到该触发事件,并将该触发事件发送至目标应用程序。在目标应用程序与其他应用程序具有关联关系的情况下,如果其它应用程序进行了更新,其他应用程序可以向操作系统发送更新事件,操作系统可以向目标应用程序发送该更新事件。89.在一些实施例中,可以接收第一应用程序发送的广播消息,将广播消息广播发送至多个第二应用程序,其中,多个第二应用程序均为目标应用程序。可选的,可以根据广播消息的标识信息,查找广播消息对应的多个第二应用程序,将广播消息广播发送至多个第二应用程序。其中,第一应用程序可以是发生更新的应用程序,第二应用程序即为与第一应用程序具有关联关系的应用程序。例如,用户可以使用第一应用程序的登录账号登录第二应用程序,如果第一应用程序的登录账号发生了更新,那么,第二应用程序的登录账号也会发生更新。90.本技术实施例中,目标应用程序接收该待处理消息所消耗的时间可以忽略不计,也就是,可以认为操作系统向目标应用程序发送待处理消息的时刻,即为目标应用程序接收该待处理消息的时刻。此时,可以获取一次目标应用程序的线程所执行的时长,即第一时长。可选的,目标应用程序的线程可以是目标应用程序的主线程。第一时长即为用户态cpu耗时时长,可以表示为utm(user time),单位是jiffies,jiffies一般指10ms。91.在cpu的设计中,用户态指非特权状态,在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。在操作系统的设计中,用户态也类似,指非特权的执行状态。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。92.在步骤s320中,在目标应用程序对应的消息处理时长内,如果未接收到目标应用程序返回的响应消息,获取目标应用程序的线程所执行的第二时长。93.目标应用程序对应的消息处理时长即为在正常情况下,目标应用程序处理接收到的消息所消耗的时长。如果在该消息处理时长内,操作系统未接收到目标应用程序返回的响应消息,表示目标应用程序未对该待处理消息进行响应。在确定发生anr的时刻,可以再获取一次目标应用程序的线程所执行的时长,即第二时长。与第一时长类似,第二时长也是用户态cpu耗时时长。94.参见图4,图4为本技术实施例中发生应用程序无响应时获取应用程序的线程所执行的第一时长和第二时长的一种示意图。假设时刻a,应用程序接收到待处理消息,此时,可以获取应用程序的线程所执行的第一时长。在消息处理时长后,即,在时刻b到达时,应用程序对该待处理消息一直未做出响应,即发生了anr,此时,获取应用程序的线程所执行的第二时长。可以看出,第一时长和第二时长的获取时刻具有一定的时间间隔,该时间间隔等于消息处理时长。可选的,在消息处理时长内,如果未接收到目标应用程序返回的响应消息,还可以杀掉目标应用程序的线程。95.在一些实施例中,如果向目标应用程序发送目标消息的时刻为第一时刻,接收目标应用针对目标消息返回的响应消息的时刻为第二时刻,则消息处理时长为第二时刻和第一时刻的时间差。具体的,可以通过下述方式确定目标应用程序对应的消息处理时长:96.将目标消息发送至目标应用程序,记录目标消息的发送时刻,在接收到目标应用程序返回的、针对目标消息的响应消息时,记录响应消息的接收时刻。将接收时刻和发送时刻的时间差,确定为目标应用程序对应的消息处理时长。目标消息可以是目标应用程序要处理的任一消息,通过测试在不发生anr的情况下,目标应用程序处理该目标消息所消耗的时长,并将测试得到的时长作为目标应用程序对应的消息处理时长。97.步骤s330,将第二时长和第一时长的差值,确定为目标应用程序的线程在该消息处理时长内的实际cpu占用时长。98.需要说明的是,目标应用程序的线程在执行过程中,对应的用户态cpu耗时时长是不断累计的,因此,第二时长大于第一时长。第二时长和第一时长的差值即为目标应用程序的线程在该消息处理时长内的实际cpu占用时长。99.可以理解的是,cpu资源通常同时被多个应用程序占用,因此,目标应用程序的线程在该消息处理时长内的实际cpu占用时长通常小于该消息处理时长。例如,该消息处理时长为5s,在实际场景中,目标应用程序在该5s内的实际cpu占用时长可能仅为1s。100.步骤s340,根据实际cpu占用时长和消息处理时长,确定目标应用程序获取cpu资源的难度等级。101.本技术实施例中,可以将实际cpu占用时长和消息处理时长进行比较,来了解目标应用程序获取cpu资源的难度等级。进而,根据该难度等级,来分析确定目标应用程序无响应的原因可能属于目标应用程序自身问题,或者属于操作系统cpu资源紧张。可以理解的是,实际cpu占用时长越长,表示目标应用程序越容易获取cpu资源,目标应用程序获取cpu资源的难度等级越低,目标应用程序无响应的原因越可能属于目标应用程序自身问题;实际cpu占用时长越短,表示目标应用程序越难获取cpu资源,目标应用程序获取cpu资源的难度等级越高,目标应用程序无响应的原因越可能属于操作系统cpu资源紧张。102.在一种可选的实施方式中,可以根据消息处理时长,确定第一目标时长和第二目标时长;其中,第一目标时长大于等于第二目标时长,且第一目标时长和第二目标时长均小于消息处理时长。可选的,可以直接根据消息处理时长,设置第一目标时长和第二目标时长,使第一目标时长大于第二目标时长。或者,也可以将消息处理时长与第一预设系数相乘,得到第一目标时长;将消息处理时长与第二预设系数相乘,得到第二目标时长;其中,第一预设系数大于等于第二预设系数。通常情况下,cpu资源被多个应用程序占用,在未发生anr的情况下,在消息处理时长内,目标应用程序的实际cpu占用时长较小,即与消息处理时长的占比通常较小,因此,第一预设系数和第二预设系数可以是较小的数值。例如,均小于等于1/3等,可选的,第一预设系数为1/3,第二预设系数为1/4。103.如果实际cpu占用时长大于第一目标时长,表示目标应用程序比较容易获取到cpu资源,确定目标应用程序获取cpu资源的难度等级属于第三等级;如果实际cpu占用时长小于第二目标时长,表示目标应用程序比较难获取到cpu资源,确定目标应用程序获取cpu资源的难度等级属于第一等级;如果实际cpu占用时长大于等于第二目标时长,且小于等于第一目标时长,确定目标应用程序获取cpu资源的难度等级属于第二等级,此时可以通过其他方式对目标应用程序无响应的原因进行进一步分析。104.在又一种可选的实施方式中,获取预先建立的时长范围和预设时长的对应关系,基于对应关系,确定消息处理时长所属的时长范围对应的目标时长阈值。例如,时长范围为大于5s且小于等于6s,对应的预设时长可以为3s;时长范围为大于6s且小于等于7s,对应的预设时长可以为4s。如果消息处理时长为6s,则预设时长为4s。105.类似地,如果实际cpu占用时长大于预设时长,确定目标应用程序获取cpu资源的难度等级属于第三等级;如果实际cpu占用时长小于预设时长,确定目标应用程序获取cpu资源的难度等级属于第一等级;如果实际cpu占用时长等于预设时长,确定目标应用程序获取cpu资源的难度等级属于第二等级。106.步骤s350,如果难度等级属于第一等级,确定目标应用程序无响应的原因属于操作系统cpu资源紧张。107.步骤s360,如果难度等级属于第二等级,确定目标应用程序无响应的原因属于操作系统cpu资源紧张,或者属于目标应用程序自身问题。108.步骤s370,如果难度等级属于第三等级,确定目标应用程序无响应的原因属于目标应用程序自身问题,其中,第一等级、第二等级和第三等级依次降低。109.本技术实施例的应用程序无响应的分析方法,在分析anr问题时,在目标应用程序每次开始处理消息时获取一次当前线程的utm,在发生anr问题时,再获取一次utm。采用后一次获取到的utm与前一次获取到的utm的差值,与真实时间进行比较,从而了解目标应用程序获取cpu资源的难易程度,进而分析出目标应用程序无响应的原因。可以看出,该方法整体流程以及实际cpu占用时长和消息处理时长的比较方式简单、清晰,并且,不需要占用cpu资源,通过最小的资源消耗,即可实现对anr问题的分析。110.应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。111.相应于上述方法实施例,本技术实施例还提供了一种应用程序无响应的分析装置,参见图5,图5为本技术实施例中应用程序无响应的分析装置的一种结构示意图,应用程序无响应的分析装置500包括:112.第一时长获取模块510,用于在向目标应用程序发送待处理消息后,获取目标应用程序的线程所执行的第一时长;113.第二时长获取模块520,用于在目标应用程序对应的消息处理时长内,如果未接收到目标应用程序返回的响应消息,获取目标应用程序的线程所执行的第二时长;114.实际占用时长确定模块530,用于将第二时长和第一时长的差值,确定为目标应用程序的线程在该消息处理时长内的实际cpu占用时长;115.难度等级确定模块540,用于根据实际cpu占用时长和消息处理时长,确定目标应用程序获取cpu资源的难度等级;116.目标应用程序无响应原因确定模块550,用于如果难度等级属于第一等级,确定目标应用程序无响应的原因属于操作系统cpu资源紧张;如果难度等级属于第二等级,确定目标应用程序无响应的原因属于操作系统cpu资源紧张,或者属于目标应用程序自身问题;如果难度等级属于第三等级,确定目标应用程序无响应的原因属于目标应用程序自身问题,其中,第一等级、第二等级和第三等级依次降低。117.可选的,难度等级确定模块540,具体用于根据消息处理时长,确定第一目标时长和第二目标时长;其中,第一目标时长大于等于第二目标时长,且第一目标时长和第二目标时长均小于消息处理时长;如果实际cpu占用时长大于第一目标时长,确定目标应用程序获取cpu资源的难度等级属于第三等级;如果实际cpu占用时长小于第二目标时长,确定目标应用程序获取cpu资源的难度等级属于第一等级;如果实际cpu占用时长大于等于第二目标时长,且小于等于第一目标时长,确定目标应用程序获取cpu资源的难度等级属于第二等级。118.可选的,目标应用程序无响应原因确定模块540,具体用于通过下述步骤实现根据消息处理时长,确定第一目标时长和第二目标时长:119.将消息处理时长与第一预设系数相乘,得到第一目标时长;120.将消息处理时长与第二预设系数相乘,得到第二目标时长;其中,第一预设系数大于等于第二预设系数。121.可选的,难度等级确定模块540,具体用于获取预先建立的时长范围和预设时长的对应关系,基于对应关系,确定消息处理时长所属的时长范围对应的目标时长阈值;如果实际cpu占用时长大于预设时长,确定目标应用程序获取cpu资源的难度等级属于第三等级;如果实际cpu占用时长小于预设时长,确定目标应用程序获取cpu资源的难度等级属于第一等级;如果实际cpu占用时长等于预设时长,确定目标应用程序获取cpu资源的难度等级属于第二等级。122.可选的,如果向目标应用程序发送目标消息的时刻为第一时刻,接收目标应用针对目标消息返回的响应消息的时刻为第二时刻,则消息处理时长为第二时刻和第一时刻的时间差。123.可选的,待处理消息为广播消息,应用程序无响应的分析装置500,还包括:124.广播消息接收模块,用于接收第一应用程序发送的广播消息;125.广播消息发送模块,用于将广播消息广播发送至多个第二应用程序,其中,多个第二应用程序均为目标应用程序。126.可选的,广播消息发送模块,具体用于根据广播消息的标识信息,查找广播消息对应的多个第二应用程序,将广播消息广播发送至多个第二应用程序。127.可选的,上述应用程序无响应的分析装置500,还包括:128.线程消灭模块,用于在消息处理时长内,如果未接收到目标应用程序返回的响应消息,则杀掉目标应用程序的线程。129.上述应用程序无响应的分析装置中各模块或单元的具体细节已经在对应的应用程序无响应的分析方法中进行了详细的描述,因此此处不再赘述。130.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。131.在本技术的示例性实施例中,还提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行本示例实施方式中上述应用程序无响应的分析方法。132.图6为本技术实施例中电子设备的一种结构示意图。需要说明的是,图6示出的电子设备600仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。133.如图6所示,电子设备600包括中央处理器601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在随机访问存储器603中,还存储有系统操作所需的各种程序和数据。中央处理器601、只读存储器602以及随机访问存储器603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。134.以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如局域网(lan)卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。135.特别地,根据本技术的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的应用程序无响应的分析方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理器601执行时,执行本技术的装置中限定的各种功能。136.本技术实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述应用程序无响应的分析方法。137.需要说明的是,本技术所示的计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器、只读存储器、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、射频等等,或者上述的任意合适的组合。138.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。139.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部