CN115437816A - 应用程序无响应分析方法、装置、电子设备和存储介质 - Google Patents
应用程序无响应分析方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115437816A CN115437816A CN202210307780.9A CN202210307780A CN115437816A CN 115437816 A CN115437816 A CN 115437816A CN 202210307780 A CN202210307780 A CN 202210307780A CN 115437816 A CN115437816 A CN 115437816A
- Authority
- CN
- China
- Prior art keywords
- iowait
- anr
- target process
- time length
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 57
- 230000004044 response Effects 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 198
- 230000008569 process Effects 0.000 claims abstract description 172
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012827 research and development Methods 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 25
- 238000012545 processing Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 239000011230 binding agent Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0736—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
- G06F11/0739—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种应用程序无响应分析方法、装置、电子设备和存储介质,该方法包括:获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张;其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值,第一差值为第二iowait与第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长。该方法能够简化ANR原因的分析过程,降低研发分析时间,提高分析效率。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种应用程序无响应分析方法、装置、电子设备和存储介质。
背景技术
应用程序(Application,APP)无响应(Application Not Responding,ANR),如果应用程序在界面((User Interface,UI)线程(Thread)被阻塞太长时间,就会出现ANR。出现ANR后通常情况下系统会弹出一个提示框,以提示用户该应用程序正在被阻塞,是否继续等待响应还是关闭。
目前,当应用程序的某一进程在运行过程中出现ANR时,系统服务器会去获取(dump)该进程的一个快照,快照中包括出现ANR时的中央处理器(Central ProcessingUnit/Processor,CPU)占用情况、安全网关(Unified Threat Management,UTM)以及线程堆栈等信息。而且根据快照信息中的现有信息只能获得出现ANR时该进程的运行状态,但是判断不了是因为应用程序自身业务耗,还是因为系统资源紧张导致应用程序无法运行导致,还要结合ANR日志(log)与代码排除,最终确定出现ANR的原因。因此现有分析出现ANR原因的方案更多的是使用经验或者推测去验证问题,一方面对处理ANR经验要求比较高,另一方面对业务理解也要比较深刻,同时验证推测需要做各种验证比较耗时。
因此,现有分析出现ANR原因的方案对业务人员的要求较高,且分析过程耗时较长,分析效率较低。
发明内容
本申请提供了一种应用程序无响应分析方法、装置、电子设备和存储介质,能够全面诊断车辆故障。
第一方面,本申请提供了一种应用程序无响应分析方法,包括:获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张;其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值,第一差值为第二iowait与第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长。
可选地,该在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因,包括:在第一差值大于第一时长的预设倍数时,确定该ANR的原因为该应用程序自身业务耗时,预设倍数大于0且小于1;在第一差值小于或等于第一时长的该预设倍数时,确定该ANR的原因为系统资源紧张。
可选地,该预设倍数大于或等于十分之一,且小于或等于三分之一。
可选地,该应用程序自身业务耗时包括以下任一种情况:该应用程序的主线程频繁进行耗时的读写文件操作;多线程操作的死锁,该多线程包括该主线程;该主线程被客户与服务通信工具对端堵塞;该系统资源紧张包括以下任一种情况:系统服务器中看门狗出现ANR;服务端客户与服务通信工具的连接达到上线导致客户无法和该系统服务器通信;系统资源已耗尽。
可选地,该获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait,包括:在该目标进程运行的过程中,每间隔预设时长获取一次对应位置的iowait,预设时长小于或等于所述时长阈值;从该多个iowait中获取第一iowait和第二iowait,其中,第二iowait为该多个iowait中最大的一个。
可选地,该获取应用程序的目标进程运行至第一位置时的第一iowait,包括:获取第一位置的第一快照,第一快照中包括第一iowait;从第一快照中获取第一iowait。
可选地,该获取该目标进程运行至第二位置时的第二iowait,包括:获取第二位置的第二快照,第二快照中包括第二iowait;从第二快照中获取第二iowait。
可选地,第一位置为该目标进程启动时的位置;第二位置为发生该ANR时该目标进程对应的位置。
可选地,该目标进程包括以下任一项:处理广播消息进程,触摸与点击进程,系统服务启动进程,内容提供者进程。
第二方面,本申请提供了一种应用程序无响应分析装置,包括:获取模块和确定模块;该获取模块,用于获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;该确定模块,用于在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张;其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值,第一差值为该获取模块获取的第二iowait与该获取模块获取的第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长。
可选地,该确定模,具体用于在第一差值大于第一时长的预设倍数时,确定该ANR的原因为该应用程序自身业务耗时,预设倍数大于0且小于1;在第一差值小于或等于第一时长的该预设倍数时,确定该ANR的原因为系统资源紧张。
可选地,该预设倍数大于或等于十分之一,且小于或等于三分之一。
可选地,该应用程序自身业务耗时包括以下任一种情况:该应用程序的主线程频繁进行耗时的读写文件操作;多线程操作的死锁,该多线程包括该主线程;该主线程被客户与服务通信工具对端堵塞;该系统资源紧张包括以下任一种情况:系统服务器中看门狗出现ANR;服务端客户与服务通信工具的连接达到上线导致客户无法和该系统服务器通信;系统资源已耗尽。
可选地,该获取模块,具体用于在该目标进程运行的过程中,每间隔预设时长获取一次对应位置的iowait,预设时长小于或等于所述时长阈值;从该多个iowait中获取第一iowait和第二iowait,其中,第二iowait为该多个iowait中最大的一个。
可选地,该获取模块,具体用于获取第一位置的第一快照,第一快照中包括第一iowait;从第一快照中获取第一iowait。
可选地,该获取模块,具体用于获取第二位置的第二快照,第二快照中包括第二iowait;从第二快照中获取第二iowait。
可选地,第一位置为该目标进程启动时的位置;第二位置为发生该ANR时该目标进程对应的位置。
可选地,该目标进程包括以下任一项:处理广播消息进程,触摸与点击进程,系统服务启动进程,内容提供者进程。
第三方面,本申请提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面提供的任一种应用程序无响应分析方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面提供的任一种应用程序无响应分析方法的步骤。
本申请实施例的第五方面,提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序或指令,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机程序或指令,实现如第一方面所述的应用程序无响应分析方法的步骤。
本申请实施例的第六方面,提供了一种芯片,该芯片包括处理器、存储器和通信接口,该通信接口和该处理器耦合,该存储器用于存储可在该处理器上运行的程序或指令,该处理器用于执行该程序或指令,实现如第一方面所述的应用程序无响应分析方法的步骤。
本申请实施例提供的技术方案与现有技术相比具有如下优点:本申请实施例中,可以通过获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;在该目标进程的运行过程中出现ANR的情况下,基于第一差值(第二iowait与第一iowait的差值)与第一时长(该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长)的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张,其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值。因此,本方案可以从应用程序自身业务耗时方面进一步分析出现ANR的具体原因,无需先排除由于系统资源紧张方面的各个原因,再去从应用程序自身业务耗时方面进一步分析出现ANR的具体原因;或者,本方案可以从系统资源紧张方面进一步分析出现ANR的具体原因,而无需先排除由于应用程序自身业务耗时方面的各个原因,再去从系统资源紧张方面进一步分析出现ANR的具体原因。本方案相比现有技术直接通过日志和代码对出现ANR的具体原因(系统资源紧张方面的各个原因和应用程序自身业务耗时方面的各个原因)一一进行排除分析,可以简化分析过程,降低研发分析时间,提高分析效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种应用程序无响应分析方法的流程示意图;
图2为本申请提供的另一种应用程序无响应分析方法的流程示意图;
图3为本申请提供的一种多线程操作死锁的示意图;
图4为本申请提供的一种处理广播进程发生ANR获取iowait的示意图;
图5为本申请提供的一种应用程序无响应分析装置的结构示意图;
图6为本申请提供的一种电子设备的硬件结构示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。
下面首先对本发明的权利要求书和说明书中涉及的一些名词或者术语进行解释说明。
Io:指读写文件操作。
iowait:累计读写文件操作时间,指系统在做读写文件操作,导致没有进程在干活,cpu在执行idle进程(0号进程)空转。
System_server:系统服务,负责显示、应用程序安装、应用程序调度等,可以简单的理解为系统。
广播:Broadcast,系统的一种通信手段,应用程序发出广播后交由system_server统一处理后再转发给接收的应用程序。
快照:指应用程序出现ANR时的状态数据,包括运行堆栈、系统资源使用情况等信息。
Binder:是安卓系统(android)提供的一种通用进程间通信技术,是android中客户(client)与服务(service)通信使用的工具。
contentprovider是android中的四大组件之一,用于存储或读取数据的一个类。
现有分析ANR原因的方案大多稳定性的很差,一直面临着应用程序自身业务耗时与系统资源紧张责任不清晰、系统问题难定位的问题。可以通过增加一些log快速识别是应用程序自身业务耗时导致ANR还是系统资源紧张导致ANR,然而因为系统承载功能较多(系统问题难定位),同时会受各方面影响,不同应用也会因为系统资源问题互相影响,如果将所有信息都dump,不仅耗费日志资源,同时对性能影响也较大。
以下举例说明现有出现ANR后,分析出现ANR原因的过程:
首先,查看移动通信记录(mobilelog)文件夹下的事件日志(events_log),从events_log中搜索关键字:am_anr,找到出现ANR的时间点、进程标识符(ProcessIdentification,PID)、ANR类型。假设从events_log中我们可以看出:出现ANR时间为07-2015:36:36.472,进程PID为1480,进程名为com.xxxx.moblie,ANR类型为KeyDispatchTimeout。我们已知发生KeyDispatchTimeout的ANR是因为输入(input)事件在5秒内没有处理完成。那么在07-20 15:36:36这个时间的前5秒,也就是在15:36:30~15:36:35这个时间段左右程序到底做了什么事情?由于已经知道进程pid了,因此可以再搜索一下pid=1480的日志,这些日志表示该进程所运行的轨迹。假设从pid=1480的日志可以知道,在07-20 15:36:29时刻程序收到了一个执行(action)消息。因此可以得出是因为应用程序com.xxxx.moblie收到了一个推送消息(com.ttt.push.RECEIVE_MESSAGE)导致了阻塞。再串联一下目前所获取到的信息:在时间07-20 15:36:29应用程序com.xxxx.moblie收到了推送信息(action=com.ttt.push.RECEIVE_MESSAGE)导致发生阻塞,5秒后发生了KeyDispatchTimeout的ANR。虽然知道了是怎么开始的,但是具体原因还没有找到,是不是由于CPU很紧张、各路应用程序员在抢占资源?因此接下来搜索关键字:ANR IN,看一下CPU的信息,假设com.xxxx.moblie占用了11%的CPU,由于现在的电子设备基本都是多核CPU。假如你的电子设备是4核CPU,那么上限是400%,以此类推,因此占用了11%的CPU其实不算多,因此不是由于CPU很紧张、各路应用程序员在抢占资源导致出现ANR。既然不是CPU负载的原因,那么到底是什么原因呢?接下来需要继续根据traces.txt日志分析,当应用程序不响应、响应慢了、或者看门狗(WatchDog)的监视没有得到回应时,系统就会dump出一个traces.txt文件,存放在文件目录:/data/anr/traces.txt,通过traces文件,我们可以拿到线程名、堆栈信息、线程当前状态、Binder call等信息。可以通过adb命令拿到该traces文件,ava的堆栈信息是我们最关心的,它能够定位到具体位置。从traces文件可以判断ttt.push.InterceptorProxy.addMiuiApplicationInterceptorProxy.java:77导致了com.xxxx.moblie发生了ANR,接着可以对着源码查看,找到出问题,并且解决它。
总结一下上述分析出现ANR原因的流程:首先搜索am_anr,找到出现ANR的时间点、进程PID、ANR类型、然后再搜索PID,找前5秒左右的日志。过滤ANR IN看CPU信息,接着查看traces.txt,找到java的堆栈信息定位代码位置,最后查看源码,分析与解决问题。这个过程基本能找到出现ANR的来龙去脉。因此上述过程需要查看日志与代码,通过经验或者推测去排除一些原因,最后确定原因,过程比较复杂且耗时,导致分析ANR原因的过程效率较低。
为了解决上述问题,本申请实施例提供了一种应用程序无响应分析方法,可以通过获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;在该目标进程的运行过程中出现ANR的情况下,基于第一差值(第二iowait与第一iowait的差值)与第一时长(该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长)的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值。因此,本方案可以从应用程序自身业务耗时方面进一步分析出现ANR的具体原因,无需先排除由于系统资源紧张方面的各个原因,再去从应用程序自身业务耗时方面进一步分析出现ANR的具体原因;或者,本方案可以从系统资源紧张方面进一步分析出现ANR的具体原因,而无需先排除由于应用程序自身业务耗时方面的各个原因,再去从系统资源紧张方面进一步分析出现ANR的具体原因。本方案相比现有技术直接通过日志和代码对出现ANR的具体原因(系统资源紧张方面的各个原因和应用程序自身业务耗时方面的各个原因)一一进行排除分析,可以简化分析过程,降低研发分析时间,提高分析效率。
本方案可以采用最小的资源消耗,仅通过获取目标进程运行过程中两个位置的iowait,然后根据两个iowait的差值,与该两个位置的实际时长之间的关系,快速分辨出是应用程序自身业务耗时还是系统资源紧张(io较高)导致应用程序一直在等待io状态,从而大大简化了anr问题分析与解决流程。
本申请应用于出现ANR,对ANR原因进行分析的场景中,本申请实施例中的电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,具体可以根据实际情况确定,此处不做限定。
本发明实施例提供的应用程序无响应分析方法可以应用于具有操作系统的电子设备。该操作系统可以为Android操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本发明实施例不作具体限定。
以下通过几个具体的实施例,对本申请的技术方案进行详细的解释说明。
图1为本申请提供的一种应用程序无响应分析方法的流程示意图,该应用程序无响应分析方法可以由应用程序无响应分析装置执行,该装置可以采用软件和/或硬件实现,并可集成在任意具有计算能力的电子设备或服务器上。如图1所示,该应用程序无响应分析方法可以包括下述的步骤101至步骤102:
101、获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait。
其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值。时长阈值是统计的可以保证在应用程序出现ANR时,分析ANR原因的准确性的最长时长,时长阈值可以根据实际情况确定,此处不做限定。
可以理解,本申请实施例中,不限定第一位置和第二位置在目标进程运行过程中的具体位置,具体可以根据实际情况确定,此处不做限定。
可选地,第一位置为该目标进程启动时的位置。
可选地,第二位置为发生该ANR时该目标进程对应的位置。
本申请实施例中,第一位置为该目标进程启动时的位置,第二位置发生该ANR时该目标进程对应的位置,则软件改动较小,降低研发压力,而且可以很好地把控获取第一iowait和获取第二iowait的时间,而且可以保证在应用程序出现ANR时,分析ANR原因的准确性。
可选地,上述步骤101具体可以通过下述的步骤11和步骤12实现。
11、在该目标进程运行的过程中,每间隔预设时长获取一次对应位置的iowait,以在该ANR前获取多个iowait。
12、从该多个iowait中获取第一iowait和第二iowait。
其中,预设时长小于或等于时长阈值,预设时长可以根据实际情况确定,本申请实施例不做限定。
其中,
其中,第二iowait为该多个iowait中最大的一个。第一iowait可以为该多个中除最大的一个之外的任意一个,具体可以根据实际情况确定,此处不做限定。
示例性地,第一iowait可以为该多个iowait中最小的一个。
可以理解,在目标进程运行的过程中,可以周期性地(每间隔预设时长)获取对应位置的iowait,然后在出现ANR时,从该多个iowait中获取第一iowait和第二iowait,通常将获取的最后一个iowait(即最大的iowait)确定为第二iowait,如此可以尽可能保证在应用程序出现ANR时,分析ANR原因的准确性。
102、在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张。
其中,第一差值为第二iowait与第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长(即总时长)。
其中,时长阈值可以根据实际情况确定,此处不做限定。
可以理解,第一差值为目标进程从运行至第一位置到运行至第二位置的过程中,io(读写文件操作)所需的时长,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的总时长,结合第一差值和第一时长的大小关系,可以确定该ANR的原因为该应用程序自身业务耗时,还是该ANR的原因为系统资源紧张。
本申请实施例中,可以从应用程序自身业务耗时方面进一步分析出现ANR的具体原因,无需先排除由于系统资源紧张方面的各个原因,再去从应用程序自身业务耗时方面进一步分析出现ANR的具体原因;或者,可以从系统资源紧张方面进一步分析出现ANR的具体原因,而无需先排除由于应用程序自身业务耗时方面的各个原因,再去从系统资源紧张方面进一步分析出现ANR的具体原因。本方案相比现有技术直接通过日志和代码对出现ANR的具体原因(系统资源紧张方面的各个原因和应用程序自身业务耗时方面的各个原因)一一进行排除分析,可以简化分析过程,降低研发分析时间,提高分析效率。
可选地,该目标进程包括以下任一项:处理广播消息进程,触摸与点击进程,系统服务启动进程,内容提供者进程。目标进程还可以包括其他进程,具体可以根据实际情况确定,此处不做限定。
其中,处理广播消息ANR为:BroadcastTimeout。可以为前台BroadcastonReceiver在10S内没有处理完成出现ANR;也可以为后台Broadcast onReceiver在60s内没有处理完成出现ANR。
其中,触摸与点击进程ANR为:KeyDispatchTimeout(常见),具体为input事件在5S内没有处理完成发生了ANR。
其中,系统服务启动进程ANR为:ServiceTimeout。可以为前台Service onCreate,onStart,onBind等生命周期在20s内没有处理完成出现ANR;也可以为后台ServiceonCreate,onStart,onBind等生命周期在200s内没有处理完成出现ANR。
其中,内容提供者进程可以为ContentProviderTimeout,具体为ContentProvider在10S内没有处理完成出现ANR。
其中,内容提供者,也可以称为存储或读取数据组件,可以为android中contentprovider,还可以是其他系统中的具有相似功能的组件,具体可以根据实际情况确定,此处不做限定。
本申请实施例中,提供了多种目标进程ANR的情况,本申请实施例提供的应用程序无响应分析方法可以应用于多种目标进程ANR原因进行分析的场景,可以简化分析过程,提高分析效率。
可选地,上述步骤101中获取第一iowait具体可以通过下述步骤101a和步骤101b实现。
101a、获取第一位置的第一快照,第一快照中包括第一iowait。
101b、从第一快照中获取第一iowait。
需要说明的是,现有技术中的快照不包括iowait信息,本申请实施例中在快照中加入了iowait信息,从而在应用程序出现ANR时,便于从快照中快速获取iowait信息,提高ANR原因的分析效率。
可以理解,本申请实施例中,可以在第一位置直接获取第一iowait;也可以在第一位置获取包括第一iowait的第一快照(并保存第一快照),然后在应用程序出现ANR时从第一快照中获取第一iowait;具体可以根据实际情况确定,此处不做限定。
本申请实施例中,在快照中加入iowait信息,对软件的改动较小,在应用程序出现ANR时,便于从快照中快速获取iowait信息,提高ANR原因的分析效率。
可选地,可选地,上述步骤101中获取第二iowait具体可以通过下述步骤101c和步骤101d实现。
101c、获取第二位置的第二快照。
其中,第二快照中包括第二iowait。
101d、从第二快照中获取第二iowait。
可以理解,本申请实施例中,可以在第二位置直接获取第二iowait;也可以在第二位置获取包括第二iowait的第二快照(并保存第二快照),然后在应用程序出现ANR时从第二快照中获取第一iowait;具体可以根据实际情况确定,此处不做限定。
本申请实施例中,在快照中加入iowait信息,对软件的改动较小,在应用程序出现ANR时,便于从快照中快速获取iowait信息,提高ANR原因的分析效率。
图2为本申请提供的一种应用程序无响应分析方法的流程示意图,该应用程序无响应分析方法可以由应用程序无响应分析装置执行,该装置可以采用软件和/或硬件实现,并可集成在任意具有计算能力的电子设备或服务器上。如图2所示,该应用程序无响应分析方法可以包括下述的步骤201至步骤203:
201、获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait。
202、在第一差值大于第一时长的预设倍数时,确定该ANR的原因为该应用程序自身业务耗时。
203、在第一差值小于或等于第一时长的该预设倍数时,确定该ANR的原因为系统资源紧张。
其中,第一差值为第二iowait与第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长(即总时长),预设倍数大于0且小于1。
可以理解,本申请实施例中,第一时长是第一位置和第二位置之间的实际时长,预设倍数是根据实际中统计的出现ANR的原因是应用程序自身业务耗时第一差值和第一时长的大小关系,以及出现ANR的原因是系统资源紧张时第一差值和第一时长的大小关系确定的。
对上述步骤201至步骤203的描述可以参考上述对步骤101至步骤102的相关描述,此处不做限定。
本申请实施例中,在在第一差值大于第一时长的预设倍数时,确定该ANR的原因为该应用程序自身业务耗时,在第一差值小于或等于第一时长的该预设倍数时,确定该ANR的原因为系统资源紧张,从而可以根据第一差值与第一时长的预设倍数的大小关系,快速确定该ANR的原因为该应用程序自身业务耗时还是系统资源紧张,可以提高ANR原因的分析效率。
可选地,该预设倍数大于或等于十分之一,且小于或等于三分之一。预设倍数可以为大于或等于十分之一,且小于或等于三分之一的任意值,具体可以根据实际情况确定,此处不做限定。其中,对于不同的应用程序进程,对应的预设倍数可以相同,也可以不同。
本申请实施例中,经统计对于不同的应用程序实际发生ANR时第一差值和第一时长之间的大小关系,确定该预设倍数大于或等于十分之一,且小于或等于三分之一,可以很好地保证ANR原因分析的准确性。
需要说明的是,预设倍数还可以为除大于或等于十分之一,且小于或等于三分之一的数值之外的数值,具体可以根据实际情况确定,此处不做限定。
可选地,该应用程序自身业务耗时包括以下任一种情况:该应用程序的主线程频繁进行耗时的读写文件操作;多线程操作的死锁,该多线程包括该主线程;该主线程被客户与服务通信工具对端堵塞;还可以包括其他情况,此处不做限定。
可选地,该系统资源紧张包括以下任一种情况:系统服务器中看门狗出现ANR;服务端客户与服务通信工具的连接达到上线导致客户无法和该系统服务器通信;系统资源已耗尽;还可以包括其他情况,此处不做限定。
其中,应用程序的主线程频繁进行耗时的读写文件操作可以包括大量的数据读写操作、数据库读写操作,还可以包括其他的,具体可以根据实际情况确定,此处不做限定。
示例性地,如图3所示,线程1占有对象1还试图占有对象2,同时线程2占有对象2还试图占有对象1,即为多线程操作的死锁,其中线程1和线程2中有一个线程为主线程,此种情况下可能发生ANR。
其中,系统服务器中看门狗出现ANR为System Server中WatchDog出现ANR。
其中,客户与服务通信工具可以为android中的Binder,也可以其他系统中具有相似功能的工具,具体可以根据实际情况确定,此处不做限定。
其中,若为android系统,则该主线程被客户与服务通信工具对端堵塞可以为主线程被Binder对端堵塞(block)。
其中,若为android系统,则服务端客户与服务通信工具的连接达到上线导致客户无法和该系统服务器通信为service binder的连接达到上线无法和System Server通信。
其中,client与service通信时,有可能遇到以下两种情况,导致client不能与service通信:1.service一直不返给client消息,2.binder被用完了。因此,servicebinder的连接达到上线无法和System Server通信,可以理解为service binder被用完了(连接达到上线),导致client不能与service通信。
其中,系统资源已耗尽指管道、CPU、IO等资源都耗尽。管道是linux中进程间通信的一种手段,cpu指的是cpu资源,IO指的是读写磁盘。
本申请实施例中,提供了多种应用程序自身业务耗时导致ANR的情况,以及多种系统资源紧张导致ANR的情况,具体可以根据实际情况确定,此处不做限定。
示例性地,如图4所示,在应用程序开始处理广播时(即处理广播进程启动时,对应图中的A点)就直接获取一次iowait(记为iowait 1,只获取iowait 1不消耗cpu资源),然后在发生anr时(对应图中的B点),系统服务会自动保存快照,从快照中获取iowait 2,iowait2减去iowait 1得到一个iowait diff(差值)(iowait diff即第一差值),使用iowait diff与真实的时间差T(T即为第一时长)去比较,如果iowait diff>T/3,则说明应用程序自身业务耗时,拍排除了系统资源紧张;如果iowait diff≤T/3,则说明系统io较高(即系统资源紧张),排除了应用程序自身业务耗时。
本申请实施例中,可通过最小的资源消耗,在分析anr问题时获取最大的收益,尤其在每次应用程序进程启动时都获取一次当前进程的iowait,在出现ANR问题时,再次获取一次当前进程的iowait,采用iowait diff(两次iowait的差值)与(应用程序进程启动时与出现ANR问题时的)真实时间的diff做比较,从而可以确定ANR的原因是应用程序自身业务耗时还是系统资源紧张。如果iowait diff过高,就可以确认是由于应用程序自身I/O导致anr(即确定ANR的原因是应用程序自身业务耗时),如果iowait diff较低,则确定是由于系统io紧张导致ANR,因此,不需要再通过查看大量日志与代码确定来确定ANR原因是应用程序自身业务耗时还是系统资源紧张。
经多次试验发现,应用本申请实施例提供的应用程序无响应分析方法,尤其对于系统资源紧张(io较高)导致ANR的问题,能降低研发99%的分析时间。
本公开还提供一种应用程序无响应分析装置,图5为本公开提供的一种应用程序无响应分析装置的结构示意图,如图5所示,该应用程序无响应分析装置包括:获取模块501和确定模块502;该获取模块501,用于获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;该确定模块502,用于在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张;其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值,第一差值为该获取模块501获取的第二iowait与该获取模块501获取的第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长。
可选地,该确定模502,具体用于在第一差值大于第一时长的预设倍数时,确定该ANR的原因为该应用程序自身业务耗时,预设倍数大于0且小于1;在第一差值小于或等于第一时长的该预设倍数时,确定该ANR的原因为系统资源紧张。
可选地,该预设倍数大于或等于十分之一,且小于或等于三分之一。
可选地,该应用程序自身业务耗时包括以下任一种情况:该应用程序的主线程频繁进行耗时的读写文件操作;多线程操作的死锁,该多线程包括该主线程;该主线程被客户与服务通信工具对端堵塞;该系统资源紧张包括以下任一种情况:系统服务器中看门狗出现ANR;服务端客户与服务通信工具的连接达到上线导致客户无法和该系统服务器通信;系统资源已耗尽。
可选地,该获取模块501,具体用于在该目标进程运行的过程中,每间隔预设时长获取一次对应位置的iowait,预设时长小于或等于所述时长阈值;从该多个iowait中获取第一iowait和第二iowait,其中,第二iowait为该多个iowait中最大的一个。
可选地,该获取模块501,具体用于获取第一位置的第一快照,第一快照中包括第一iowait;从第一快照中获取第一iowait。
可选地,该获取模块501,具体用于获取第二位置的第二快照,第二快照中包括第二iowait;从第二快照中获取第二iowait。
可选地,第一位置为该目标进程启动时的位置;第二位置为发生该ANR时该目标进程对应的位置。
可选地,该目标进程包括以下任一项:处理广播消息进程,触摸与点击进程,系统服务启动进程,内容提供者进程。
需要说明的是,上述应用程序无响应分析装置可以为本申请上述方法实施例中的电子设备,也可以是该电子设备中能够实现该装置实施例功能的功能模块和/或功能实体,本申请实施例不做限定。
本申请实施例中,各模块可以实现上述方法实施例提供的应用程序无响应分析方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
图6为实现本申请各个实施例的一种电子设备的硬件结构示意图,如图6所示,该电子设备包括但不限于:射频(radio frequency,RF)电路601、存储器602、输入单元603、显示单元604、传感器605、音频电路606、无线通信(wireless fidelity,WiFi)模块607、处理器608、电源609、以及摄像头310等部件。其中,射频电路601包括接收器6011和发送器6012。本领域技术人员可以理解,图6中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路601可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器608处理;另外,将设计上行的数据发送给基站。通常,RF电路601包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路601还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器602可用于存储软件程序以及模块,处理器608通过运行存储在存储器602的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元603可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元603可包括触控面板6031以及其他输入设备6032。触控面板6031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板6031上或在触控面板6031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选地,触控面板6031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器608,并能接收处理器608发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种实现触控面板6031。除了触控面板6031,输入单元603还可以包括其他输入设备6032。具体地,其他输入设备6032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元604可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种菜单。显示单元604可包括显示面板6041,可选地,可以采用液晶显示器(liquidcrystal display,LCD)、有机发光二极管(organic light-Emitting diode,OLED)等形式来配置显示面板6041。进一步的,触控面板6031可覆盖显示面板6041,当触控面板6031检测到在其上或附近的触摸操作后,传送给处理器608以确定触摸事件的,随后处理器608根据触摸事件的在显示面板6041上提供相应的视觉输出。虽然在图6中,触控面板6031与显示面板6041是作为两个独立的部件来实现电子设备的输入和输入功能,但是在某些实施例中,可以将触控面板6031与显示面板6041集成而实现电子设备的输入和输出功能。
电子设备还可包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板6041的亮度,接近传感器可在电子设备移动到耳边时,退出显示面板6041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备还可配置的陀螺仪、地磁传感器、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。本申请实施例中,该电子设备可以包括加速度传感器、深度传感器或者距离传感器等。
音频电路606、扬声器6061,传声器6062可提供用户与电子设备之间的音频接口。音频电路606可将接收到的音频数据转换后的电信号,传输到扬声器6061,由扬声器6061转换为声音信号输出;另一方面,传声器6062将收集的声音信号转换为电信号,由音频电路606接收后转换为音频数据,再将音频数据输出处理器608处理后,经RF电路601以发送给比如另一电子设备,或者将音频数据输出至存储器602以便进一步处理。
WiFi属于短距离无线传输技术,电子设备通过WiFi模块607可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块607,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器608是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选地,处理器608可包括一个或多个处理单元;优选的,处理器608可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器608中。
电子设备还包括给各个部件供电的电源609(比如电池),优选的,电源可以通过电源管理系统与处理器608逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管未示出,电子设备还可以包括蓝牙模块等,在此不再赘述。
本申请实施例中,处理器608,用于获取应用程序的目标进程运行至第一位置时的第一iowait和该目标进程运行至第二位置时的第二iowait;在该目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定该ANR的原因为该应用程序自身业务耗时或系统资源紧张;其中,出现ANR的时刻与第二位置对应的时刻的差值小于或等于时长阈值,第一差值为第二iowait与第一iowait的差值,第一时长为该目标进程从运行至第一位置到运行至第二位置所消耗的实际时长。
本实施例中各种实现方式具有的有益效果具体可以参见上述应用程序无响应分析方法实施例中相应实现方式所具有的有益效果,为避免重复,此处不再赘述。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储程序或指令,该程序或指令被处理器执行时实现上述方法实施例提供的应用程序无响应分析方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序或指令,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机程序或指令,实现上述方法实施例提供的应用程序无响应分析方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例另提供了一种芯片,所述芯片包括处理器、存储器和通信接口,所述通信接口和所述处理器耦合,该存储器用于存储可在该处理器上运行的程序或指令,该处理器用于执行该程序或指令,实现上述应用程序无响应分析方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,处理器,例如可以是中央处理器(Central Processing Unit,CPU),专用集成电路(Application Specific Integrated Circuit,ASIC),或被配置成实施本申请实施例的一个或多个集成电路。存储器可以是一个存储装置,也可以是多个存储元件的统称,且存储器可以包括随机存储器,也可以包括非易失性存储器,例如磁盘存储器,闪存等。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置,服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种应用程序无响应分析方法,其特征在于,所述方法包括:
获取应用程序的目标进程运行至第一位置时的第一累计读写文件操作时间iowait和所述目标进程运行至第二位置时的第二iowait;
在所述目标进程的运行过程中出现应用程序无响应ANR的情况下,基于第一差值与第一时长的关系,确定所述ANR的原因为所述应用程序自身业务耗时或系统资源紧张;
其中,出现所述ANR的时刻与所述第二位置对应的时刻的差值小于或等于时长阈值,所述第一差值为所述第二iowait与所述第一iowait的差值,所述第一时长为所述目标进程从运行至所述第一位置到运行至所述第二位置所消耗的实际时长。
2.根据权利要求1所述的方法,其特征在于,所述在所述目标进程的运行过程中出现ANR的情况下,基于第一差值与第一时长的关系,确定所述ANR的原因,包括:
在所述第一差值大于所述第一时长的预设倍数时,确定所述ANR的原因为所述应用程序自身业务耗时,所述预设倍数大于0且小于1;
在所述第一差值小于或等于所述第一时长的所述预设倍数时,确定所述ANR的原因为系统资源紧张。
3.根据权利要求2所述的方法,其特征在于,所述预设倍数大于或等于十分之一,且小于或等于三分之一。
4.根据权利要求1所述的方法,其特征在于,所述获取应用程序的目标进程运行至第一位置时的第一iowait和所述目标进程运行至第二位置时的第二iowait,包括:
在所述目标进程运行的过程中,每间隔预设时长获取一次对应位置的iowait,以在所述ANR前获取多个iowait,所述预设时长小于或等于所述时长阈值;
从所述多个iowait中获取所述第一iowait和所述第二iowait,其中,所述第二iowait为所述多个iowait中最大的一个。
5.根据权利要求1所述的方法,其特征在于,所述获取应用程序的目标进程运行至第一位置时的第一iowait,包括:
获取所述第一位置的第一快照,所述第一快照中包括所述第一iowait;
从所述第一快照中获取所述第一iowait。
6.根据权利要求1所述的方法,其特征在于,所述获取所述目标进程运行至第二位置时的第二iowait,包括:
获取所述第二位置的第二快照,所述第二快照中包括所述第二iowait;
从所述第二快照中获取所述第二iowait。
7.根据权利要求1所述的方法,其特征在于,所述第一位置为所述目标进程启动时的位置;
所述第二位置为发生所述ANR时所述目标进程对应的位置。
8.一种应用程序无响应分析装置,其特征在于,包括:获取模块和确定模块;
所述获取模块,用于获取应用程序的目标进程运行至第一位置时的第一累计读写文件操作时间iowait;
所述获取模块,还用于获取所述目标进程运行至第二位置时的第二iowait;
所述确定模块,用于在所述目标进程的运行过程中出现应用程序无响应ANR的情况下,基于第一差值与第一时长的关系,确定所述ANR的原因为所述应用程序自身业务耗时或系统资源紧张;
其中,所述第一差值为所述获取模块获取的所述第二iowait与所述获取模块获取的所述第一iowait的差值,所述第一时长为所述目标进程从运行至所述第一位置到运行至所述第二位置所消耗的实际时长。
9.一种电子设备,其特征在于,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的应用程序无响应分析方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的应用程序无响应分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210307780.9A CN115437816A (zh) | 2022-03-25 | 2022-03-25 | 应用程序无响应分析方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210307780.9A CN115437816A (zh) | 2022-03-25 | 2022-03-25 | 应用程序无响应分析方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437816A true CN115437816A (zh) | 2022-12-06 |
Family
ID=84241633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210307780.9A Pending CN115437816A (zh) | 2022-03-25 | 2022-03-25 | 应用程序无响应分析方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437816A (zh) |
-
2022
- 2022-03-25 CN CN202210307780.9A patent/CN115437816A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960507B (zh) | 编译优化方法、装置、存储介质、智能终端及服务器 | |
CN107368400B (zh) | Cpu监测方法、装置、计算机可读存储介质和移动终端 | |
CN107291586B (zh) | 一种应用程序的分析方法和装置 | |
CN111858112B (zh) | 一种检测内存泄露的方法、客户端及服务器 | |
WO2019137258A1 (zh) | 内存处理方法、电子设备及计算机可读存储介质 | |
WO2019137252A1 (zh) | 内存处理方法、电子设备、计算机可读存储介质 | |
CN103150248B (zh) | 一种启动项耗时的测算方法和装置 | |
US20140149972A1 (en) | Method, device and terminal for improving running speed of application | |
CN104133761A (zh) | 一种移动终端的内存占用分析方法、装置和系统 | |
CN109246233A (zh) | 基于在线监控的数据处理方法、装置、设备及存储介质 | |
CN108984374B (zh) | 一种数据库性能的测试方法和系统 | |
CN107908492B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN110413497B (zh) | 异常监控方法、装置、终端设备及计算机可读存储介质 | |
US20240152439A1 (en) | Detection Method and Electronic Device | |
CN110765085A (zh) | 日志信息写入方法、系统、存储介质及移动终端 | |
CN107832191B (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN106709330B (zh) | 记录文件执行行为的方法及装置 | |
CN112084104A (zh) | 一种异常测试方法和装置 | |
CN107122204B (zh) | 应用的卸载状态检测方法及装置 | |
CN115437816A (zh) | 应用程序无响应分析方法、装置、电子设备和存储介质 | |
CN109286571A (zh) | 移动终端及应用程序限核及限网的方法、装置和存储装置 | |
CN105740396B (zh) | Http数据处理方法及装置 | |
CN114490307B (zh) | 一种单元测试方法、装置及存储介质 | |
CN110633192B (zh) | 测试方法、测试装置、终端设备及计算机可读存储介质 | |
CN103269341A (zh) | 一种间谍程序的分析方法和计算机系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |