ANR异常数据的收集方法、显示方法、装置及设备制造方法及图纸

技术编号:30769573 阅读:16 留言:0更新日期:2021-11-10 12:36
本申请实施例公开了一种ANR异常数据的收集方法、显示方法、装置及设备,属于计算机技术领域。所述方法包括:采集目标应用程序的运行数据,运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;记录运行数据;在目标应用程序发生ANR的情况下,向服务器上报ANR异常数据,ANR异常数据包括该ANR的发生时间以及与该ANR对应的运行数据。本申请实现了针对性收集用于分析ANR异常的数据,能够为ANR异常分析提供有效的数据,降低了ANR异常的分析难度。度。度。

【技术实现步骤摘要】
ANR异常数据的收集方法、显示方法、装置及设备


[0001]本申请实施例涉及计算机
,特别涉及一种ANR(Application Not responding,应用程序未响应)异常数据的收集方法、显示方法、装置及设备。

技术介绍

[0002]ANR是用户在使用运行的应用程序时可能出现的问题。在Android系统中,特定的事件需要在规定的时间范围内完成,应用程序如果在规定的时间范围内未能进行有效的响应或者响应时间过长,就会造成ANR异常。
[0003]在相关技术中,当应用程序发生ANR异常后,技术人员通过调取操作系统产生的追踪文档(trace.txt)等手段分析ANR异常的产生原因。追踪文档中记载了发生ANR异常的时间点以及相应时间段内的线程等信息、出现ANR异常的应用程序、进程号以及CPU(Central Processing Unit,中央处理器)的负载情况等信息,技术人员通过关键字查询等手段从追踪文档中寻找用于分析ANR异常产生原因的数据。
[0004]然而,由于追踪文档中能收集到的数据有限,并且包含许多底层数据,这些数据对ANR异常分析过程没有帮助。在相关技术中,追踪文档不能清晰、明确地显示导致ANR异常的原因。

技术实现思路

[0005]本申请实施例提供了一种ANR异常数据的收集方法、显示方法、装置及设备,可用于解决相关技术中用于分析ANR异常的参考信息指向性不强的问题。技术方案如下:
[0006]根据本申请实施例的一个方面,提供了一种ANR异常数据的收集方法,所述方法由目标应用程序执行,所述方法包括:
[0007]采集所述目标应用程序的运行数据,所述运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;其中,所述主线程调用栈数据用于指示所述目标应用程序的主线程的调用情况,所述主线程任务数据用于指示所述主线程在不同时间的任务执行情况,所述函数执行数据用于指示所述目标应用程序的线程中的函数执行情况;
[0008]记录所述运行数据;
[0009]在所述目标应用程序发生ANR的情况下,向服务器上报ANR异常数据,所述ANR异常数据包括所述ANR的发生时间以及与所述ANR对应的所述运行数据。
[0010]根据本申请实施例的一个方面,提供了一种ANR异常数据的收集方法,所述方法由分析设备执行,所述方法包括:
[0011]从服务器获取目标应用程序的ANR异常数据,所述ANR异常数据包括所述目标应用程序的ANR的发生时间以及与所述ANR对应的运行数据,所述运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;其中,所述主线程调用栈数据用于指示所述目标应用程序的主线程的调用情况,所述主线程任务数据用于指示所述主线程在不同时间的任务执行情况,所述函数执行数据用于指示所述目标应用程序的线程中的函数执行情况;
[0012]可视化显示所述运行数据。
[0013]根据本申请实施例的一个方面,提供了一种ANR异常数据的收集装置,所述装置包括:
[0014]采集模块,用于采集所述目标应用程序的运行数据,所述运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;其中,所述主线程调用栈数据用于指示所述目标应用程序的主线程的调用情况,所述主线程任务数据用于指示所述主线程在不同时间的任务执行情况,所述函数执行数据用于指示所述目标应用程序的线程中的函数执行情况;
[0015]记录模块,用于记录所述运行数据;
[0016]上报模块,用于在所述目标应用程序发生ANR的情况下,向服务器上报ANR异常数据,所述ANR异常数据包括所述ANR的发生时间以及与所述ANR对应的所述运行数据。
[0017]根据本申请实施例的一个方面,提供了一种ANR异常数据的显示装置,所述装置包括:
[0018]获取模块,用于从服务器获取目标应用程序的ANR异常数据,所述ANR异常数据包括所述目标应用程序的ANR的发生时间以及与所述ANR对应的运行数据,所述运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;其中,所述主线程调用栈数据用于指示所述目标应用程序的主线程的调用情况,所述主线程任务数据用于指示所述主线程在不同时间的任务执行情况,所述函数执行数据用于指示所述目标应用程序的线程中的函数执行情况;
[0019]显示模块,用于可视化显示所述运行数据。
[0020]根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序以实现上述ANR异常数据的收集方法,或实现上述ANR异常数据的显示方法。
[0021]根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序用于被处理器执行,以实现上述ANR异常数据的收集方法,或实现上述ANR异常数据的显示方法。
[0022]根据本申请的一个方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述ANR异常数据的收集方法,或者上述ANR异常数据的显示方法。
[0023]本申请实施例提供的技术方案可以带来如下有益效果:
[0024]本申请提供一种ANR异常数据的收集方法,通过应用程序采集并记录运行数据,运行数据包括:主线程调用栈数据、主线程任务数据和函数执行数据,并在应用程序产生ANR的情况下,将记录的主线程调用栈数据、主线程任务数据和函数执行数据发送给服务器,实现了针对性收集用于分析ANR异常的数据,本方法能够为ANR异常分析提供有效的数据,降低了ANR异常的分析难度。
[0025]本申请还提供一种ANR异常数据的显示方法,通过分析设备从服务器获取目标应用程序的ANR异常数据,并可视化显示运行数据,实现了按照时间线清晰,直观地展示目标应用程序出现ANR异常前一段时间内目标应用程序的运行场景,有助于分析ANR异常的产生原因。
附图说明
[0026]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]图1是本申请一个实施例提供的网络构架的示意图;
[0028]图2示例性示出了子线程的消息访问主线程方法的示意图;
[0029]图3示例性示出了调用栈结构的示意图;
[0030]图4是本申请一个实施例提供的ANR异常数据的收集方法的流程图;
[0031]图5是本申请一个实施例提供的ANR异常数据的显示方法的流程图;
[0032]图6是本申请一个实施例提供的可视化显示运行数据的示意图;
[0033]图7是本申请另一个实施例提供的可视化显示主线程调用栈数据的示意图;
[0034]图8是本申请另一个实施例提供的可视化显示主线程任本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用程序无响应ANR异常数据的收集方法,其特征在于,所述方法由目标应用程序执行,所述方法包括:采集所述目标应用程序的运行数据,所述运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;其中,所述主线程调用栈数据用于指示所述目标应用程序的主线程的调用情况,所述主线程任务数据用于指示所述主线程在不同时间的任务执行情况,所述函数执行数据用于指示所述目标应用程序的线程中的函数执行情况;记录所述运行数据;在所述目标应用程序发生ANR的情况下,向服务器上报ANR异常数据,所述ANR异常数据包括所述ANR的发生时间以及与所述ANR对应的所述运行数据。2.根据权利要求1所述的方法,其特征在于,所述主线程调用栈数据包括至少一组主线程堆栈信息和调用时间信息之间的对应关系;所述采集所述目标应用程序的运行数据,包括:获取所述主线程堆栈信息,所述主线程堆栈信息用于指示所述主线程中各类方法间的调用关系;获取所述主线程堆栈信息对应的调用时间信息,所述调用时间信息用于指示所述主线程堆栈信息的获取时刻。3.根据权利要求1所述的方法,其特征在于,所述主线程任务数据包括:至少一个目标任务的开始执行时间、执行时长和CPU占用时长,所述目标任务是所述主线程的消息队列中的任务;所述采集所述目标应用程序的运行数据,包括:在所述目标任务开始执行的情况下,获取所述目标任务的开始执行时间以及第一线程运行时间,所述第一线程运行时间是指当所述目标任务开始执行时,所述主线程的运行时长;在所述目标任务执行结束的情况下,获取所述目标任务的结束执行时间以及第二线程运行时间,所述第二线程运行时间是指当所述目标任务执行结束时,所述主线程的运行时长;根据所述目标任务的开始执行时间和所述目标任务的结束执行时间,确定所述目标任务的执行时长;根据所述第一线程运行时间和所述第二线程运行时间,确定所述目标任务的CPU占用时长。4.根据权利要求1所述的方法,其特征在于,所述函数执行数据包括:至少一个目标函数的函数名、开始执行时间、结束执行时间、执行时长和CPU占用时长;所述采集所述目标应用程序的运行数据,包括:在所述目标函数开始执行的情况下,获取所述目标函数的函数名、开始执行时间和第三线程运行时间,所述第三线程运行时间是指当所述目标函数开始执行时,所述目标函数所在线程的运行时长;在所述目标函数执行结束的情况下,获取所述目标函数的结束执行时间和第四线程运行时间,所述第四线程运行时间是指当所述目标函数执行结束时,所述目标函数所在线程的运行时长;
根据所述目标函数的开始执行时间和所述目标函数的结束执行时间,确定所述目标函数执行时长;根据所述第三线程运行时间和所述第四线程运行时间,确定所述目标函数的CPU占用时长。5.根据权利要求1至4任一项所述的方法,其特征在于,所述目标应用程序的目标包中插入有监听函数,所述监听函数用于采集、记录和上报所述运行数据;所述目标包中需要进行ANR异常监控的位置插入有开启命令,所述开启命令用于触发执行所述监听函数。6.一种应用程序无响应ANR异常数据的显示方法,其特征在于,所述方法包括:从服务器获取目标应用程序的ANR异常数据,所述ANR异常数据包括所述目标应用程序的ANR的发生时间以及与所述ANR对应的运行数据,所述运行数据包括主线程调用栈数据、主线程任务数据和函数执行数据;其中,所述主线程调用栈数据用于指示所述目标应用程序的主线程的调用情况,所述主线程任务数据用于指示所述主线程在不同时间的任务执行情况,所述函数执行数据用于指示所述目标应用程序的线程中的函数执行情况;可视化显示所述运行数据。7.根据权利要求6所述的方法,其特征在于,所述主线程调用栈数据包括:主线程堆栈信息和所述主线程堆栈信息对应的调用时间,所述主线程堆栈信息是指主线程中各类方法...

【专利技术属性】
技术研发人员:张文彬
申请(专利权)人:广州市百果园网络科技有限公司
类型:发明
国别省市:

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

1