CN112306800A - 应用程序无响应的监控方法、装置、车载设备及车辆 - Google Patents
应用程序无响应的监控方法、装置、车载设备及车辆 Download PDFInfo
- Publication number
- CN112306800A CN112306800A CN202011150445.XA CN202011150445A CN112306800A CN 112306800 A CN112306800 A CN 112306800A CN 202011150445 A CN202011150445 A CN 202011150445A CN 112306800 A CN112306800 A CN 112306800A
- Authority
- CN
- China
- Prior art keywords
- event
- time
- response
- time threshold
- application program
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3013—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例涉及一种应用程序无响应的监控方法、装置、车载设备及车辆,其中该方法包括:获取目标应用程序对事件的实时响应时间,如果事件的实时响应时间大于事件对应的时间阈值,则确定目标应用程序发生无响应,其中,时间阈值是动态可调整的,将目标应用程序的无响应记录信息上传至云端,以确定无响应对应的阻塞点。本公开实施例中将应用程序无响应的固定超时时间改变为动态可调整,使得问题更加容易复现和暴露,并且调整的方式较为便捷,避免了人工多次复现才能够定位问题,节省了人力和复现时间,提高了应用程序无响应问题的监控效率。
Description
技术领域
本公开涉及车辆控制技术领域,尤其涉及应用程序无响应的监控方法、装置、车载设备及车辆。
背景技术
随着车辆技术和互联网技术的不断发展,车辆变得越来越智能化,车辆控制器中可以安装多个应用程序,以提供多种功能。
应用程序在无法进行正常响应时会在用户界面中弹出应用程序无响应(Application Not Responding,ANR)对话框。目前应用程序对不同事件的响应时间阈值的修改需要通过重新编译并替换,耗时太长,无法快速动态调整,进而无法抓到真正阻塞点。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种应用程序无响应的监控方法、装置、车载设备及车辆。
第一方面,本公开实施例提供了一种应用程序无响应的监控方法,所述方法包括:
获取目标应用程序对事件的实时响应时间;
如果所述事件的实时响应时间大于所述事件对应的时间阈值,则确定所述目标应用程序发生无响应,其中,所述时间阈值是动态可调整的;
将所述目标应用程序的无响应记录信息上传至云端,以确定所述无响应对应的阻塞点。
可选的,所述无响应记录信息包括无响应提示时间以及设定时间段的日志信息,所述设定时间段包括所述时间阈值,所述日志信息包括堆栈信息。
可选的,将所述目标应用程序的无响应记录信息上传至云端之后,所述方法还包括:
接收所述云端发送的反馈信息;
如果所述反馈信息表示未确定出所述无响应对应的阻塞点,则调整所述事件的时间阈值。
可选的,调整所述事件的时间阈值之后,所述方法还包括:
基于所述事件调整后的所述时间阈值继续判断所述目标应用程序是否发生无响应;
在所述目标应用程序继续发生无响应的情况下,将所述目标应用程序的无响应记录信息继续上传至云端,直到所述反馈信息表示已确定所述无响应对应的阻塞点。
可选的,调整所述事件的时间阈值,包括:
接收用户发送的用于修改所述事件的时间阈值的第一命令,所述第一命令包括第一时间属性值;
将所述第一时间属性值作为所述事件调整后的所述时间阈值。
可选的,调整所述事件的时间阈值,包括:
接收云端下发的第二命令,所述第二命令包括属性值设置命令,所述属性值设置命令用于修改所述事件的时间阈值,所述属性值设置命令包括第二时间属性值;
将所述第二时间属性值作为所述事件调整后的所述时间阈值。
可选的,所述事件调整后的所述时间阈值小于所述事件调整前的所述时间阈值。
可选的,所述事件包括以下至少一种:输入事件、前台服务执行事件、后台服务执行事件、广播处理前台事件、广播处理后台事件、内容提供服务事件和启动前台服务事件。
第二方面,本公开实施例还提供了一种应用程序无响应的监控装置,所述装置包括:
响应时间获取模块,用于获取目标应用程序对事件的实时响应时间;
无响应模块,用于如果所述事件的实时响应时间大于所述事件对应的时间阈值,则确定所述目标应用程序发生无响应,其中,所述时间阈值是动态可调整的;
阻塞点模块,用于将所述目标应用程序的无响应记录信息上传至云端,以确定所述无响应对应的阻塞点。
可选的,所述无响应记录信息包括无响应提示时间以及设定时间段的日志信息,所述设定时间段包括所述时间阈值,所述日志信息包括堆栈信息。
可选的,所述装置还包括时间阈值调整模块,具体用于:将所述目标应用程序的无响应记录信息上传至云端之后,
接收所述云端发送的反馈信息;
如果所述反馈信息表示未确定出所述无响应对应的阻塞点,则调整所述事件的时间阈值。
可选的,所述装置还包括无响应重复判断模块,具体用于:调整所述事件的时间阈值之后,
基于所述事件调整后的所述时间阈值继续判断所述目标应用程序是否发生无响应;
在所述目标应用程序继续发生无响应的情况下,将所述目标应用程序的无响应记录信息继续上传至云端,直到所述反馈信息表示已确定所述无响应对应的阻塞点。
可选的,所述时间阈值调整模块具体用于:
接收用户发送的用于修改所述事件的时间阈值的第一命令,所述第一命令包括第一时间属性值;
将所述第一时间属性值作为所述事件调整后的所述时间阈值。
可选的,所述时间阈值调整模块具体用于:
接收云端下发的第二命令,所述第二命令包括属性值设置命令,所述属性值设置命令用于修改所述事件的时间阈值,所述属性值设置命令包括第二时间属性值;
将所述第二时间属性值作为所述事件调整后的所述时间阈值。
可选的,所述事件调整后的所述时间阈值小于所述事件调整前的所述时间阈值。
可选的,所述事件包括以下至少一种:输入事件、前台服务执行事件、后台服务执行事件、广播处理前台事件、广播处理后台事件、内容提供服务事件和启动前台服务事件。
第三方面,本公开实施例提供一种车载设备,所述车载设备包括:处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如第一方面所述的方法。
第四方面,本公开实施例提供一种车辆,包括如第三方面所述的车载设备。
本公开实施例提供的应用程序无响应的监控方法、装置、车载设备及车辆,获取目标应用程序对事件的实时响应时间,如果事件的实时响应时间大于事件对应的时间阈值,则确定目标应用程序发生无响应,其中,时间阈值是动态可调整的,将目标应用程序的无响应记录信息上传至云端,以确定无响应对应的阻塞点。本公开实施例中将应用程序无响应的固定超时时间改变为动态可调整,使得问题更加容易复现和暴露,并且调整的方式较为便捷,避免了人工多次复现才能够定位问题,节省了人力和复现时间,提高了应用程序无响应问题的监控效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种应用程序无响应的监控方法的流程示意图;
图2为本公开实施例提供的另一种应用程序无响应的监控方法的流程示意图;
图3为本公开实施例提供的一种时间阈值调整的流程示意图;
图4为本公开实施例提供的另一种时间阈值调整的流程示意图;
图5为本公开实施例提供的一种应用程序无响应的监控装置的结构示意图;
图6为本公开实施例提供的一种车载设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
车辆中的车载设备能够安装多个应用程序,本公开实施例对车载设备的具体类型不作限定,例如,当车载设备为一种运行安卓(Android)系统的设备时,可以安装多个应用程序,应用程序在设定的时间内无法响应事件时,通常会在用户界面中弹出ANR对话框或直接退出。应用程序对不同事件的响应时间阈值是不同的,示例性的,假设应用程序对输入(input)类事件的响应时间是5S,如果在输入类事件发生后,应用程序超过了5S没有做出响应时,用户界面中就会弹出ANR对话框;又如,应用程序对前台服务类事件的响应时间是20S,如果在前台服务类事件发生后,应用程序超过了20S没有做出响应时,用户界面中就会弹出ANR对话框。另外,在触发ANR对话框后同时会输出日志文件供研发人员分析使用,因为一般情况下日志文件会包含阻塞位置或阻塞点。
目前应用程序对不同事件的响应时间阈值可能无法动态调整,不能通过调整响应时间阈值让阻塞问题更容易暴露;当可以修改响应时间阈值时,修改一次需要重新编译并替换,耗时太长;很多时候发生ANR时抓到的日志文件并不包含真正的阻塞点,对分析没有帮助;当没有抓到真正阻塞点时,就需要不断复现、分析和调试来定位阻塞点,浪费人力和时间。针对上述问题,本公开实施例提供了一种应用程序无响应的监控方法,对应用程序的事件的响应时间进行监控时,将应用程序无响应的固定超时时间改变为动态可调整,使得问题更加容易复现和暴露,并且调整的方式较为便捷,避免了人工多次复现才能够定位问题,节省了人力和复现时间,提高了应用程序无响应问题的监控效率。下面结合具体的实施例对该方法进行介绍。
图1为本公开实施例提供的一种应用程序无响应的监控方法的流程示意图,该方法可以由应用程序无响应的监控装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在车载设备中。如图1所示,该方法包括:
S101、获取目标应用程序对事件的实时响应时间。
其中,目标应用程序可以为任意一个应用程序,本公开实施例中对此不作限定。事件可以为目标应用程序中的功能事件,可以包括多种不同的事件,例如事件可以包括以下至少一种:输入(input)事件、前台服务(servicef)执行事件、后台服务(serviceb)执行事件、广播处理前台(broadcasf)事件、广播处理后台(broadcasb)事件、内容提供服务事件和启动前台服务事件。
具体的,监控目标应用程序的事件,通过调用预设的时间监控程序或时间监控函数获取目标应用程序对事件的实时响应时间,实时响应时间为从事件发生之后的持续时间。
S102、如果事件的实时响应时间大于事件对应的时间阈值,则确定目标应用程序发生无响应,其中,时间阈值是动态可调整的。
其中,时间阈值可以为判定应用程序无法正常响应的超时时间,安卓系统的设备中对于一些事件需要在一定的事件范围内完成,如果超过预定时间未能得到有效响应或响应时间过长,均会造成应用程序无响应。应用程序的不同类型的事件对应的时间阈值可以不同。本公开实施例中的时间阈值是动态可调整的。
本公开实施例中,在进行应用程序无响应的监控之前,还可以包括:确定事件对应的时间阈值。本实施例中可以预先为应用程序的各事件设置对应的时间阈值,并将事件和时间阈值的关联关系进行存储。当对目标应用程序进行应用程序无响应的监控之前,可以基于预先存储的事件和时间阈值的关联关系,确定不同事件对应的时间阈值,以进行后续的监控。例如输入事件的时间阈值可以为5S,前台服务执行事件的时间阈值可以为20S、后台服务执行事件的时间阈值可以为200S、广播处理前台事件的时间阈值可以为10S,广播处理后台事件的时间阈值可以为60S。
具体的,获取目标应用程序对事件的实时响应时间之后,基于事件对应的时间阈值对目标应用程序是否发生应用程序无响应进行判断,如果至少一个事件的实时响应时间大于该事件对应的时间阈值,则确定目标应用程序发生无响应,在用户界面中弹出ANR对话框,并且确定阻塞点;如果全部事件的实时响应时间小于或等于对应的时间阈值,则目标应用程序无ANR问题,返回执行S101。
步骤103、将目标应用程序的无响应记录信息上传至云端,以确定无响应对应的阻塞点。
其中,无响应记录信息可以理解为目标应用程序发生无响应时记录的相关信息,无响应记录信息可以包括无响应提示时间以及设定时间段的日志信息,设定时间段包括时间阈值,日志信息包括堆栈信息。无响应提示时间是指ANR提示框弹出的时间。设定时间段可以为包括时间阈值的一个较大的时间段,具体可以根据实际情况进行设定,例如时间阈值为5S时,设定时间段可以为10S。阻塞点为造成目标应用程序无响应的阻塞位置。
本公开实施例中,确定目标应用程序发生无响应之后,即可将ANR的提示时间和包括时间阈值内设定时间段之内车载设备生成的日志信息上传至云端,以使研发人员可以进行问题定位和分析,确定目标应用程序无响应对应的阻塞点。
本公开实施例中,将目标应用程序的无响应记录信息上传至云端之后,方法还包括:接收云端发送的反馈信息;如果反馈信息表示未确定出无响应对应的阻塞点,则调整事件的时间阈值。其中,反馈信息是指研发人员根据无响应记录信息进行阻塞点定位之后发送信息,该反馈信息中包括阻塞点是否定位成功的结果。由于目标应用程序发生无响应之后,才获取无响应记录信息,可能会存在时延,无响应记录信息中可能不包括阻塞点所在的信息,因此存在并没有确定出阻塞点的情况。接收云端发送的反馈信息,如果反馈信息表示未确定出目标应用程序发生无响应对应的阻塞点,则对事件的时间阈值进行调整。
可选的,调整事件的时间阈值,可以包括:接收用户发送的用于修改事件的时间阈值的第一命令,第一命令包括第一时间属性值;将第一时间属性值作为事件调整后的时间阈值。
时间属性值可以理解为用于表征时间阈值的属性值,该时间属性值可以动态调整,而不是在使用时动态读取,避免使用时动态读取可能会对系统性能造成的影响。示例性的,可以采用“persist.sys.anr.XXX.timeout AAA”表示一个事件的时间阈值,其中“AAA”为时间属性值,表示“XXX”事件对应的时间阈值,“persist.sys.anr.XXX.timeout”为属性名,“XXX”可以表示具体的事件,用于区分事件,例如可以采用input、servicef、serviceb、broadcastf、broadcastb、contentprovider和startforeground表征输入事件、前台服务执行事件、后台服务执行事件、广播处理前台事件、广播处理后台事件、内容提供服务事件和启动前台服务事件,以“persist”开头类型的属性可以保证设备重启前后值不变,其后跟“sys”可以保证只允许系统权限修改,防止第三方软件修改。
第一命令为调试命令。调试命令可以理解为适用于调试版本的应用程序的命令,具体可以为adb命令,例如第一命令可以为“setproppersist.sys.anr.XXX.timeout AAA”,其中“setprop”表示一种设置现有属性值的函数命令。接收研发人员发送的第一命令,第一命令用于修改事件的时间阈值,第一命令中可以包括第一时间属性值,将第一时间属性值确定为事件调整后的时间阈值。第一时间属性值表示对应于第一命令的时间属性值。
可选的,调整事件的时间阈值,可以包括:接收云端下发的第二命令,第二命令包括属性值设置命令,属性值设置命令用于修改事件的时间阈值,属性值设置命令包括第二时间属性值;将第二时间属性值作为事件调整后的时间阈值。第二命令可以为云端下发的命令,适用于用户版本的应用程序。属性值设置命令用于修改事件的时间阈值,属性值设置命令可以与上述第一命令采用的函数命令相同。通过云端向指定的车载设备下发第二命令,车载设备的特定服务程序负责接收和解析该第二命令,得到其中包括的属性值设置命令,然后执行该属性值设置命令,以将属性值设置命令中包括的第二时间属性值确定为事件调整后的时间阈值。
可选的,事件调整后的时间阈值小于事件调整前的时间阈值,使得复现时问题更容量暴露出来。
可选的,调整事件的时间阈值之后,方法还包括:基于事件调整后的时间阈值继续判断目标应用程序是否发生无响应;在目标应用程序继续发生无响应的情况下,将目标应用程序的无响应记录信息继续上传至云端,直到反馈信息表示已确定无响应对应的阻塞点。具体的,对事件的时间阈值调整之后,可以将事件调整后的时间阈值与实时响应时间进行比对,以判断目标应用程序是否发生无响应,在事件的实时响应时间大于事件调整后的时间阈值时,则确定目标应用程序继续发生无响应;之后可以将目标应用程序的无响应记录信息继续上传至云端,接收云端发送的反馈信息,直到反馈信息表示已确定无响应对应的阻塞点。
示例性的,输入事件的时间阈值为4S,如果在输入事件发生后,应用程序超过了4S没有做出响应,用户界面中就会弹出ANR对话框;进一步,车载设备可以将ANR对话框的提示时间以及包括该4S内车载设备生成的日志发送给云端,云端将该ANR对话框的提示时间以及日志发送给研发人员的终端,从而使得研发人员可以对输入事件的ANR对话框进行问题定位;如果研发人员没有定位到阻塞点,则可以将输入事件的时间阈值降低为3S,如果在输入事件发生后,应用程序超过了3S没有做出响应,用户界面中就会弹出ANR对话框;进一步,车载设备可以将ANR对话框的提示时间以及包括该3S内车载设备生成的日志发送给云端,云端将该ANR对话框的提示时间以及日志发送给研发人员的终端,从而使得研发人员可以对输入事件的ANR对话框进行问题定位。
本公开实施例中可以动态调整不同事件的时间阈值,通过适当缩短时间阈值,让某类难复现或无法抓到真正阻塞点的ANR问题更容易暴露出来,避免了人工多次复现才能够定位问题,节省了人力和复现时间。
本公开实施例通过获取目标应用程序对事件的实时响应时间,如果事件的实时响应时间大于事件对应的时间阈值,则确定目标应用程序发生无响应,其中,时间阈值是动态可调整的,将目标应用程序的无响应记录信息上传至云端,以确定无响应对应的阻塞点。本公开实施例中将应用程序无响应的固定超时时间改变为动态可调整,使得问题更加容易复现和暴露,并且调整的方式较为便捷,避免了人工多次复现才能够定位问题,节省了人力和复现时间,提高了应用程序无响应问题的监控效率。
图2为本公开实施例提供的另一种应用程序无响应的监控方法的流程示意图,本实施例在上述实施例的基础上,进一步优化了上述应用程序无响应的监控方法。如图2所示,该方法包括:
S201、获取目标应用程序对事件的实时响应时间。
其中,目标应用程序可以为任意一个应用程序,本公开实施例中对此不作限定。事件可以为目标应用程序中的功能事件,可以包括多种不同的事件,例如事件可以包括以下至少一种:输入(input)事件、前台服务(servicef)执行事件、后台服务(serviceb)执行事件、广播处理前台(broadcasf)事件、广播处理后台(broadcasb)事件、内容提供服务事件和启动前台服务事件。
具体的,监控目标应用程序的事件,通过调用预设的时间监控程序或时间监控函数获取目标应用程序对事件的实时响应时间,实时响应时间为从事件发生之后的持续时间。
S202、事件的实时响应时间是否大于事件对应的时间阈值,若是,则执行S203;否则,返回执行S201。
其中,时间阈值可以为判定应用程序无法正常响应的超时时间,安卓系统的设备中对于一些事件需要在一定的事件范围内完成,如果超过预定时间未能得到有效响应或响应时间过长,均会造成应用程序无响应。应用程序的不同类型的事件对应的时间阈值可以不同。本公开实施例中的时间阈值是动态可调整的。
本公开实施例中,在进行应用程序无响应的监控之前,还可以包括:确定事件对应的时间阈值。本实施例中可以预先为应用程序的各事件设置对应的时间阈值,并将事件和时间阈值的关联关系进行存储。当对目标应用程序进行应用程序无响应的监控之前,可以基于预先存储的事件和时间阈值的关联关系,确定不同事件对应的时间阈值,以进行后续的监控。例如输入事件的时间阈值可以为5S,前台服务执行事件的时间阈值可以为20S、后台服务执行事件的时间阈值可以为200S、广播处理前台事件的时间阈值可以为10S,广播处理后台事件的时间阈值可以为60S。
具体的,获取目标应用程序对事件的实时响应时间之后,基于事件对应的时间阈值对目标应用程序是否发生应用程序无响应进行判断,如果至少一个事件的实时响应时间大于该事件对应的时间阈值,则执行S203,在用户界面中弹出ANR对话框,并且确定阻塞点;如果全部事件的实时响应时间小于或等于对应的时间阈值,则目标应用程序无ANR问题,返回执行S201。
S203、确定目标应用程序发生无响应。
S204、将目标应用程序的无响应记录信息上传至云端,以确定无响应对应的阻塞点。
其中,无响应记录信息可以理解为目标应用程序发生无响应时记录的相关信息,无响应记录信息可以包括无响应提示时间以及设定时间段的日志信息,设定时间段包括时间阈值,日志信息包括堆栈信息。无响应提示时间是指ANR提示框弹出的时间。设定时间段可以为包括时间阈值的一个较大的时间段,具体可以根据实际情况进行设定,例如时间阈值为5S时,设定时间段可以为10S。阻塞点为造成目标应用程序无响应的阻塞位置。
本公开实施例中,确定目标应用程序发生无响应之后,即可将ANR的提示时间和包括时间阈值内设定时间段之内车载设备生成的日志信息上传至云端,以使研发人员可以进行问题定位和分析,确定目标应用程序无响应对应的阻塞点。
S205、接收云端发送的反馈信息。
其中,反馈信息是指研发人员根据无响应记录信息进行阻塞点定位之后发送信息,该反馈信息中包括阻塞点是否定位成功的结果。由于目标应用程序发生无响应之后,存在并没有确定出阻塞点的情况,接收云端发送的反馈信息,对反馈信息进行识别。
S206、反馈信息是否表示未确定出无响应对应的阻塞点,若是,则执行S207;否则,执行S208。
如果反馈信息表示未确定出目标应用程序发生无响应对应的阻塞点,则执行S207;否则,执行S208。
S207、调整事件的时间阈值。
可选的,调整事件的时间阈值,可以包括:接收用户发送的用于修改事件的时间阈值的第一命令,第一命令包括第一时间属性值;将第一时间属性值作为事件调整后的时间阈值。
时间属性值可以理解为用于表征时间阈值的属性值,该时间属性值可以动态调整,而不是在使用时动态读取,避免使用时动态读取可能会对系统性能造成的影响。示例性的,可以采用“persist.sys.anr.XXX.timeout AAA”表示一个事件的时间阈值,其中“AAA”为时间属性值,表示“XXX”事件对应的时间阈值,“persist.sys.anr.XXX.timeout”为属性名,“XXX”可以表示具体的事件,用于区分事件,例如可以采用input、servicef、serviceb、broadcastf、broadcastb、contentprovider和startforeground表征输入事件、前台服务执行事件、后台服务执行事件、广播处理前台事件、广播处理后台事件、内容提供服务事件和启动前台服务事件,以“persist”开头类型的属性可以保证设备重启前后值不变,其后跟“sys”可以保证只允许系统权限修改,防止第三方软件修改。
第一命令为调试命令。调试命令可以理解为适用于调试版本的应用程序的命令,具体可以为adb命令,例如第一命令可以为“setproppersist.sys.anr.XXX.timeout AAA”,其中“setprop”表示一种设置现有属性值的函数命令。接收研发人员发送的第一命令,第一命令用于修改事件的时间阈值,第一命令中可以包括第一时间属性值,将第一时间属性值确定为事件调整后的时间阈值。第一时间属性值表示对应于第一命令的时间属性值。
可选的,调整事件的时间阈值,可以包括:接收云端下发的第二命令,第二命令包括属性值设置命令,属性值设置命令用于修改事件的时间阈值,属性值设置命令包括第二时间属性值;将第二时间属性值作为事件调整后的时间阈值。第二命令可以为云端下发的命令,适用于用户版本的应用程序。属性值设置命令用于修改事件的时间阈值,属性值设置命令可以与上述第一命令采用的函数命令相同。通过云端向指定的车载设备下发第二命令,车载设备的特定服务程序负责接收和解析该第二命令,得到其中包括的属性值设置命令,然后执行该属性值设置命令,以将属性值设置命令中包括的第二时间属性值确定为事件调整后的时间阈值。
可选的,事件调整后的时间阈值小于事件调整前的时间阈值,使得复现时问题更容量暴露出来。
由于用户版本的应用程序的命令方式没有权限修改属性值,因此可以通过云端下发命令的方式修改时间属性值。示例性的,图3为本公开实施例提供的一种时间阈值调整的流程示意图,图4为本公开实施例提供的另一种时间阈值调整的流程示意图,图3和图4分别为云端和应用程序所在车载设备的设备端的流程示意图。
参见图3,云端中,时间阈值的调整过程可以包括:S11、开始。S12、云端输入对应命令并下发。当需要调整时间阈值时,云端可以输入对应的包括属性值设置命令的第二命令并下发给应用程序所在的设备端。S13、等待设备端反馈。S14、3S内是否成功下发,若是,则执行S17;否则,执行S15。其中,3S表示下发成功的超时时间,3S仅为示例,具体的超时时间可以根据实际情况进行设定。判断在3S内命令是否成功下发,若是,则执行S17;否则,执行S15。S15、下发次数≤5?若是,则执行S18;否则,执行S16。其中,5表示下发次数的阈值,5仅为示例,具体的下发次数的阈值可以根据实际情况进行设定。判断命令的下发次数是否小于或等于5,若是,则执行S18;否则,执行S16。S16、云端提示下发失败。当命令在3S内未成功下发,且下发次数大于5时,则云端可以确定命令下发失败,向用户提示下发失败。S17、结束。S18、重新发送,下发次数+1。当命令在3S内未成功下发,且下发次数小于等于5时,则可以重新进行命令的下发,并将下发次数加一,之后可以返回执行S13。
参见图4,应用程序所在车载设备的设备端中,时间阈值的调整过程可以包括:S21、开始。S22、设备端监听云端命令下发。应用程序所在设备端通过预设的监听程序可以监听云端的第二命令是否下发。S23、是否有命令下发。若是,则执行S24;否则,返回执行S22。判断云端是否有下发第二命令,若是,则执行S24;否则,返回执行S22。S24、特定服务接收并解析命令。设备端通过预设的特定服务程序接收该第二命令,并对第二命令进行解析,得到解析后的命令。S25、是否为setprop命令?若是,则执行S26;否则,执行S28。判断解析后的命令是否为属性值设置命令,也即是否为setprop命令,若是,则执行S26;否则,执行S28。S26、执行解析的命令。执行属性值设置命令“setproppersisit.sys.anr.XXX.timeoutAAA”,以将属性值设置命令中包括的第二时间属性值确定为事件调整后的时间阈值。S27、给云端反馈并重启设备。将时间阈值修改成功的消息返回给云端,并重启应用程序所在设备,以基于事件调整后的时间阈值继续判断应用程序是否发生无响应。S28、结束。
由于用户版本的应用程序的命令方式没有权限修改属性,而调试版本的应用程序有权限通过命令修改属性值,为了适配调试版本和其他版本,并且让调试版本更加便捷,本公开实施例中通过两种调整时间阈值的方案可以兼容调试版本的应用程序和其他版权的应用程序,适用性更强。并且,通过命令调整的方式较为便捷,避免了修改时重新编译替换造成的耗时长的问题,提高了调整的效率。
S207之后,可以返回执行S201,不同的是,在S202时,将事件的实时响应时间与事件调整后的时间阈值进行对比,以判断目标应用程序是否发生无响应,如果事件的实时响应时间大于事件调整后的时间阈值时,则确定目标应用程序继续发生无响应,直到S206中反馈信息表示确定出无响应对应的阻塞点,则执行S208。
S208、结束。
当反馈信息表示确定出无响应对应的阻塞点之后,研发人员可以对该阻塞点的问题进行处理,目标应该程序升级后的下一个版本不会由于该阻塞点出现无响应的问题。
示例性的,输入事件的时间阈值为4S,如果在输入事件发生后,应用程序超过了4S没有做出响应,用户界面中就会弹出ANR对话框;进一步,车载设备可以将ANR对话框的提示时间以及包括该4S内车载设备生成的日志发送给云端,云端将该ANR对话框的提示时间以及日志发送给研发人员的终端,从而使得研发人员可以对输入事件的ANR对话框进行问题定位;如果研发人员没有定位到阻塞点,则可以将输入事件的时间阈值降低为3S,如果在输入事件发生后,应用程序超过了3S没有做出响应,用户界面中就会弹出ANR对话框;进一步,车载设备可以将ANR对话框的提示时间以及包括该3S内车载设备生成的日志发送给云端,云端将该ANR对话框的提示时间以及日志发送给研发人员的终端,从而使得研发人员可以对输入事件的ANR对话框进行问题定位。
本公开实施例中的应用程序无响应的监控方法,当遇到没有抓到真正阻塞点的ANR问题且无法继续分析时,可以根据具体的事件动态的适当缩短时间阈值,让该ANR问题容易暴露出来,然后可以自行复现,这样耗时点容易被多份日志文件中某些抓到,这样基本不需要测试人员帮忙过多次复现,节省了人力和时间,例如可以节省半天、一天、几天甚至一周以上的时间。
本公开实施例通过获取目标应用程序对事件的实时响应时间,如果事件的实时响应时间大于事件对应的时间阈值,则确定目标应用程序发生无响应,将目标应用程序的无响应记录信息上传至云端,以确定无响应对应的阻塞点,接收云端发送的反馈信息,如果反馈信息表示未确定出无响应对应的阻塞点,调整事件的时间阈值,基于事件调整后的时间阈值继续判断目标应用程序是否发生无响应,在目标应用程序继续发生无响应的情况下,将目标应用程序的无响应记录信息继续上传至云端,直到反馈信息表示已确定无响应对应的阻塞点。本公开实施例中将应用程序无响应的固定超时时间改变为动态可调整,使得问题更加容易复现和暴露,并且调整的方式较为便捷,避免了人工多次复现才能够定位问题,节省了人力和复现时间,提高了应用程序无响应问题的监控效率。
图5为本公开实施例提供的一种应用程序无响应的监控装置的结构示意,该装置可由软件和/或硬件实现,一般可集成在车载设备中。如图5所示,该装置包括:
响应时间获取模块301,用于获取目标应用程序对事件的实时响应时间;
无响应模块302,用于如果所述事件的实时响应时间大于所述事件对应的时间阈值,则确定所述目标应用程序发生无响应,其中,所述时间阈值是动态可调整的;
阻塞点模块303,用于将所述目标应用程序的无响应记录信息上传至云端,以确定所述无响应对应的阻塞点。
可选的,所述无响应记录信息包括无响应提示时间以及设定时间段的日志信息,所述设定时间段包括所述时间阈值,所述日志信息包括堆栈信息。
可选的,所述装置还包括时间阈值调整模块,具体用于:将所述目标应用程序的无响应记录信息上传至云端之后,
接收所述云端发送的反馈信息;
如果所述反馈信息表示未确定出所述无响应对应的阻塞点,则调整所述事件的时间阈值。
可选的,所述装置还包括无响应重复判断模块,具体用于:调整所述事件的时间阈值之后,
基于所述事件调整后的所述时间阈值继续判断所述目标应用程序是否发生无响应;
在所述目标应用程序继续发生无响应的情况下,将所述目标应用程序的无响应记录信息继续上传至云端,直到所述反馈信息表示已确定所述无响应对应的阻塞点。
可选的,所述时间阈值调整模块具体用于:
接收用户发送的用于修改所述事件的时间阈值的第一命令,所述第一命令包括第一时间属性值;
将所述第一时间属性值作为所述事件调整后的所述时间阈值。
可选的,所述时间阈值调整模块具体用于:
接收云端下发的第二命令,所述第二命令包括属性值设置命令,所述属性值设置命令用于修改所述事件的时间阈值,所述属性值设置命令包括第二时间属性值;
将所述第二时间属性值作为所述事件调整后的所述时间阈值。
可选的,所述事件调整后的所述时间阈值小于所述事件调整前的所述时间阈值。
可选的,所述事件包括以下至少一种:输入事件、前台服务执行事件、后台服务执行事件、广播处理前台事件、广播处理后台事件、内容提供服务事件和启动前台服务事件。
本公开实施例所提供的应用程序无响应的监控装置可执行本发明任意实施例所提供的应用程序无响应的监控方法,具备执行方法相应的功能模块和有益效果。
图6为本公开实施例提供的一种车载设备的结构示意图。该车载设备例如可以是一个安卓系统的设备。如图6所示,车载设备400包括一个或多个处理器401和存储器402。
处理器401可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制车载设备400中的其他组件以执行期望的功能。
存储器402可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行所述程序指令,以实现上文所述的本公开的实施例的应用程序无响应的监控方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,车载设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置403还可以包括例如键盘、鼠标等等。
该输出装置404可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置404可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该车载设备400中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,车载设备400还可以包括任何其他适当的组件。
在上述实施方式的基础上,本公开实施例还提供一种车辆,该车辆可包括上述实施方式提供的任一种车载设备。因此,该车辆也可具有上述实施方式中的应用程序无响应的监控方法和装置所具有的有益效果,相同之处可参照上文中对应用程序无响应的监控方法和装置的解释说明进行理解,在此不赘述。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的应用程序无响应的监控方法。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的应用程序无响应的监控方法。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种应用程序无响应的监控方法,其特征在于,所述方法包括:
获取目标应用程序对事件的实时响应时间;
如果所述事件的实时响应时间大于所述事件对应的时间阈值,则确定所述目标应用程序发生无响应,其中,所述时间阈值是动态可调整的;
将所述目标应用程序的无响应记录信息上传至云端,以确定所述无响应对应的阻塞点。
2.根据权利要求1所述的方法,其特征在于,所述无响应记录信息包括无响应提示时间以及设定时间段的日志信息,所述设定时间段包括所述时间阈值,所述日志信息包括堆栈信息。
3.根据权利要求1所述的方法,其特征在于,将所述目标应用程序的无响应记录信息上传至云端之后,所述方法还包括:
接收所述云端发送的反馈信息;
如果所述反馈信息表示未确定出所述无响应对应的阻塞点,则调整所述事件的时间阈值。
4.根据权利要求3所述的方法,其特征在于,调整所述事件的时间阈值之后,所述方法还包括:
基于所述事件调整后的所述时间阈值继续判断所述目标应用程序是否发生无响应;
在所述目标应用程序继续发生无响应的情况下,将所述目标应用程序的无响应记录信息继续上传至云端,直到所述反馈信息表示已确定所述无响应对应的阻塞点。
5.根据权利要求3所述的方法,其特征在于,调整所述事件的时间阈值,包括:
接收用户发送的用于修改所述事件的时间阈值的第一命令,所述第一命令包括第一时间属性值;
将所述第一时间属性值作为所述事件调整后的所述时间阈值。
6.根据权利要求3所述的方法,其特征在于,调整所述事件的时间阈值,包括:
接收云端下发的第二命令,所述第二命令包括属性值设置命令,所述属性值设置命令用于修改所述事件的时间阈值,所述属性值设置命令包括第二时间属性值;
将所述第二时间属性值作为所述事件调整后的所述时间阈值。
7.根据权利要求3、5或6所述的方法,其特征在于,所述事件调整后的所述时间阈值小于所述事件调整前的所述时间阈值。
8.根据权利要求1所述的方法,其特征在于,所述事件包括以下至少一种:输入事件、前台服务执行事件、后台服务执行事件、广播处理前台事件、广播处理后台事件、内容提供服务事件和启动前台服务事件。
9.一种应用程序无响应的监控装置,其特征在于,所述装置包括:
响应时间获取模块,用于获取目标应用程序对事件的实时响应时间;
无响应模块,用于如果所述事件的实时响应时间大于所述事件对应的时间阈值,则确定所述目标应用程序发生无响应,其中,所述时间阈值是动态可调整的;
阻塞点模块,用于将所述目标应用程序的无响应记录信息上传至云端,以确定所述无响应对应的阻塞点。
10.根据权利要求9所述的装置,其特征在于,所述无响应记录信息包括无响应提示时间以及设定时间段的日志信息,所述设定时间段包括所述时间阈值,所述日志信息包括堆栈信息。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括时间阈值调整模块,具体用于:将所述目标应用程序的无响应记录信息上传至云端之后,
接收所述云端发送的反馈信息;
如果所述反馈信息表示未确定出所述无响应对应的阻塞点,则调整所述事件的时间阈值。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括无响应重复判断模块,具体用于:调整所述事件的时间阈值之后,
基于所述事件调整后的所述时间阈值继续判断所述目标应用程序是否发生无响应;
在所述目标应用程序继续发生无响应的情况下,将所述目标应用程序的无响应记录信息继续上传至云端,直到所述反馈信息表示已确定所述无响应对应的阻塞点。
13.根据权利要求9所述的装置,其特征在于,所述时间阈值调整模块具体用于:
接收用户发送的用于修改所述事件的时间阈值的第一命令,所述第一命令包括第一时间属性值;
将所述第一时间属性值作为所述事件调整后的所述时间阈值。
14.一种车载设备,其特征在于,所述车载设备包括处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1-8中任一所述的方法。
15.一种车辆,其特征在于,包括权利要求14所述的车载设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011150445.XA CN112306800A (zh) | 2020-10-23 | 2020-10-23 | 应用程序无响应的监控方法、装置、车载设备及车辆 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011150445.XA CN112306800A (zh) | 2020-10-23 | 2020-10-23 | 应用程序无响应的监控方法、装置、车载设备及车辆 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112306800A true CN112306800A (zh) | 2021-02-02 |
Family
ID=74327289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011150445.XA Withdrawn CN112306800A (zh) | 2020-10-23 | 2020-10-23 | 应用程序无响应的监控方法、装置、车载设备及车辆 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306800A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572906A (zh) * | 2018-04-24 | 2018-09-25 | 广州优视网络科技有限公司 | Anr实时监控方法、装置、终端和存储介质 |
CN109902011A (zh) * | 2019-02-28 | 2019-06-18 | 深圳乐信软件技术有限公司 | 一种软件卡顿监测方法、装置、设备和存储介质 |
-
2020
- 2020-10-23 CN CN202011150445.XA patent/CN112306800A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572906A (zh) * | 2018-04-24 | 2018-09-25 | 广州优视网络科技有限公司 | Anr实时监控方法、装置、终端和存储介质 |
CN109902011A (zh) * | 2019-02-28 | 2019-06-18 | 深圳乐信软件技术有限公司 | 一种软件卡顿监测方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608689B (zh) | 客户端上应用程序的更新方法、装置及电子设备 | |
US10002054B2 (en) | Method and system for performing automatic system recovery | |
CN111967017B (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
CN110515795B (zh) | 一种大数据组件的监控方法、装置、电子设备 | |
US7124412B2 (en) | Extensible BIOS error log | |
CN109032811B (zh) | 一种数据监控方法、装置及电子设备 | |
CN110704025A (zh) | 编码规范工具的生成方法和装置、存储介质、电子设备 | |
CN114443043A (zh) | Maven源码包第三方组件的检测方法及系统 | |
CN112306800A (zh) | 应用程序无响应的监控方法、装置、车载设备及车辆 | |
CN112527459A (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
CN106874004B (zh) | 低版本软件兼容高版本文件的方法以及客户端和服务器 | |
CN111475819B (zh) | 识别异常终端设备的方法及装置、存储介质、电子设备 | |
EP4050495A1 (en) | Trigger implementing method and device | |
CN111831551B (zh) | 一种非阻塞式嵌入式软件测试方法、装置及存储介质 | |
CN115145595A (zh) | 依赖库的安装方法、装置、服务器、电子设备及存储介质 | |
CN113612816A (zh) | 一种数据采集方法、系统、终端及计算机可读存储介质 | |
CN112346927A (zh) | 一种文件描述符的检测方法、装置、车载设备及车辆 | |
CN116186699B (zh) | Php文件访问检测方法及装置 | |
CN111209121B (zh) | 应用程序的录音方法、终端设备及介质 | |
CN116775147B (zh) | 一种可执行文件处理方法、装置、设备及存储介质 | |
CN110737563B (zh) | 一种应用程序信息上报、接收方法和装置 | |
CN115221839A (zh) | 一种日志格式化方法和装置、电子设备和存储介质 | |
CN112764730A (zh) | 一种业务对象监控方法及装置 | |
CN109408244B (zh) | 一种基于Azure WebJob的应用数据获取方法及装置 | |
CN116700823A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210202 |
|
WW01 | Invention patent application withdrawn after publication |