应用检测方法、装置、设备以及存储介质制造方法及图纸

技术编号:27846752 阅读:11 留言:0更新日期:2021-03-30 12:56
本公开提供了一种应用检测方法、装置、设备以及存储介质,涉及应用检测领域。具体实现方案为:基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据;基于卡顿数据,得到应用的卡顿原因。本公开实施例中,基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,能够快速准确地得到卡顿数据,进而基于卡顿数据快速准确地进行卡顿原因定位。顿原因定位。顿原因定位。

【技术实现步骤摘要】
应用检测方法、装置、设备以及存储介质


[0001]本公开涉及计算机
,尤其涉及应用检测领域。

技术介绍

[0002]在安卓(Android)等操作系统中,应用有很多滑动手势或者动画效果,如果手势不流畅,出现卡顿,会导致用户体验差,甚至用户会删除应用。反之,体验流畅可以吸引更多用户使用。导致卡顿的原因是很难定位的。例如,仅进行代码再次查看(review)难以发现哪些代码会导致卡顿,仅进行黑盒测试又很难确定具体导致卡顿的是什么代码。

技术实现思路

[0003]本公开提供了一种用于应用检测方法、装置、设备以及存储介质。
[0004]根据本公开的一方面,提供了一种应用检测方法,包括:
[0005]基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据;
[0006]基于卡顿数据,得到应用的卡顿原因。
[0007]根据本公开的另一方面,提供了一种应用检测装置,包括:
[0008]第一获取模块,用于基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据;
[0009]处理模块,用于基于卡顿数据,得到应用的卡顿原因。
[0010]根据本公开的另一方面,提供了一种电子设备,包括:
[0011]至少一个处理器;以及
[0012]与该至少一个处理器通信连接的存储器;其中,
[0013]该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的应用检测方法。
[0014]根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的应用检测方法。
[0015]根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例中的应用检测方法。
[0016]根据本公开的技术,基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,能够快速准确地得到卡顿数据,进而基于卡顿数据快速准确地进行卡顿原因定位。
[0017]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0018]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0019]图1是根据本公开一实施例的应用检测方法的流程示意图;
[0020]图2是根据本公开另一实施例的应用检测方法的流程图;
[0021]图3是根据本公开另一实施例的应用检测方法的流程图;
[0022]图4是根据本公开另一实施例的应用检测方法的流程图;
[0023]图5a是根据本公开一实施例中出现卡顿的页面示例的示意图;
[0024]图5b是根据本公开一实施例中卡顿树的示意图;
[0025]图6是根据本公开一实施例的应用检测装置的示意性框图;
[0026]图7是根据本公开一实施例的应用检测装置的示意性框图;
[0027]图8是根据本公开一实施例的应用检测装置的示意性框图;
[0028]图9是根据本公开一实施例的应用检测装置的示意性框图;
[0029]图10是用来实现本公开实施例的应用检测的方法的电子设备的框图。
具体实施方式
[0030]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0031]图1是根据本公开一实施例的应用检测方法的流程示意图。该方法可以包括:
[0032]S11、基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据。
[0033]S12、基于所述卡顿数据,得到所述应用的卡顿原因。
[0034]在操作系统例如安卓系统中,可以运行很多应用(也可以称为应用程序),在应用运行时,可以获取该应用的每帧绘制间隔例如n毫秒。应用的主线程消息中可以包括应用执行的各任务的信息和耗时信息。例如,主线程消息中可以包括执行某个绘制任务的类型、名称、颜色、图形等信息,以及执行该绘制任务所用的时间长度。应用的主线程调用栈可以包括应用在执行每个任务时具体所需的动作、模块、元素等项目,以及每个项目所需要的耗时信息。例如,执行某个绘制任务需要生成多条线段,在主线程调用栈可以记录每条线段的信息以及绘制每条线段所需要的耗时信息。
[0035]本公开实施例中基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,能够快速准确地得到卡顿数据,进而基于卡顿数据快速准确地进行卡顿原因定位。
[0036]图2是根据本公开另一实施例的应用检测方法的流程图。该实施例的应用检测方法可以包括上述实施例的各步骤。在本实施例中,在S11中,基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据,包括:
[0037]S21、基于所述每帧绘制间隔和卡顿阈值,从所述主线程消息的执行信息和主线程调用栈中筛选得到达到卡顿阈值的卡顿数据。
[0038]具体地,可以根据实际场景预设卡顿阈值。例如,可以将卡顿阈值设置为16ms。如果每帧绘制间隔超出卡顿阈值,可以认为该帧出现卡顿原因。基于出现卡顿原因的帧所对应的时间范围,从主线程消息的执行信息和主线程调用栈中筛选卡顿数据。利用每帧绘制间隔和卡顿阈值可以获取超时较长的帧对应的主线程消息的执行信息和主线程调用栈,有利于合理地控制卡顿数据的数据量。
[0039]在一种实施方式中,基于所述每帧绘制间隔和卡顿阈值,从所述主线程消息的执行信息和主线程调用栈中筛选得到达到卡顿阈值的卡顿数据,包括:在第N帧绘制间隔大于卡顿阈值的情况下,基于第N帧的绘制开始时间戳和绘制结束时间戳,获取处于所述绘制开始时间戳和绘制结束时间戳之间的主线程消息的执行信息和主线程调用栈,N为大于或等于0的整数。基于绘制开始时间戳、绘制结束时间戳以及卡顿阈值,可以获取处于超时较长的帧的绘制开始时间戳和绘制结束时间戳之间的卡顿数据,有利于合理地控制卡顿数据的获取范围,得到符合需求且数据量不大的卡顿数据。
[0040]示例性地,如果基于某一帧的绘制开始时间戳和绘制结束时间戳得到某一帧的绘制间隔大于卡顿阈值,则表示在这一帧出现卡顿。可以从主线程消息的执行信息中,筛选出处于该绘制开始时间戳和绘制结束时间戳之间的各任务及其耗时信息。还可以从主线程调用栈中,筛选出处于该绘制开始时间戳和绘制结束时间戳之间的执行各任务所需的项目及其对应的耗时信息。
[0041]具体例如,如果基于某一帧的绘制开始时间戳T1和绘制结束时间戳T1得到该帧的绘制间隔为30毫秒,并且卡顿阈值为16毫秒本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用检测方法,包括:基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据;基于所述卡顿数据,得到所述应用的卡顿原因。2.根据权利要求1所述的方法,其特征在于,基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据,包括:基于所述每帧绘制间隔和卡顿阈值,从所述主线程消息的执行信息和主线程调用栈中筛选得到达到卡顿阈值的卡顿数据。3.根据权利要求2所述的方法,其特征在于,基于所述每帧绘制间隔和卡顿阈值,从所述主线程消息的执行信息和主线程调用栈中筛选得到达到卡顿阈值的卡顿数据,包括:在第N帧绘制间隔大于卡顿阈值的情况下,基于第N帧的绘制开始时间戳和绘制结束时间戳,获取处于所述绘制开始时间戳和绘制结束时间戳之间的主线程消息的执行信息和主线程调用栈,N为大于或等于0的整数。4.根据权利要求1所述的方法,其特征在于,基于所述卡顿数据,得到所述应用的卡顿原因,包括:基于所述卡顿数据生成用于表示所述应用的卡顿原因的日志树。5.根据权利要求4所述的方法,其特征在于,基于所述卡顿数据生成用于表示所述应用的卡顿原因的日志树,包括:基于处于所述每帧绘制间隔的绘制开始时间戳和绘制结束时间戳之间的所述应用执行的各任务及其耗时信息生成第一级节点;基于执行各任务所需的项目及其对应的耗时信息生成第二级节点;基于所述第一级节点和所述第二级节点,生成所述日志树,其中所述第二级节点为所述第一级节点的子节点。6.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:基于系统垂直同步信号获取所述每帧绘制间隔。7.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:获取应用的主线程消息的执行信息,所述主线程消息的执行信息包括所述主线程消息执行的各任务及其对应的耗时信息。8.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:采用抽样轮询的方式获取应用的主线程调用栈,所述主线程调用栈中包括执行各所述任务所需的项目及其对应的耗时信息。9.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:通过时间戳对所述每帧绘制间隔、所述主线程消息的执行信息和所述主线程调用栈进行匹配。10.根据权利要求1至5中任一项所述的方法,其特征在于,所述每帧绘制间隔、所述主线程消息的执行信息通过主线程获取,所述主线程调用栈通过异步线程获取;所述异步线程还用于执行得到卡顿数据和卡顿原因的步骤。11.一种应用检测装置,包括:第一获取模块,用于基于应用的每帧绘制间隔、主线程消息的执行信息和主线程调用栈,得到卡顿数据;
处理模块,用于基于所述卡顿数据,得到所述应用的卡顿原因。12.根据权利要求11所述的装置,其特征在于,所述第一获取模块包括:筛选子模块,用于基于所述每帧绘制间隔和卡顿阈值,从...

【专利技术属性】
技术研发人员:李享
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1