CN105389258B - 一种程序检测方法及装置 - Google Patents

一种程序检测方法及装置 Download PDF

Info

Publication number
CN105389258B
CN105389258B CN201510916597.9A CN201510916597A CN105389258B CN 105389258 B CN105389258 B CN 105389258B CN 201510916597 A CN201510916597 A CN 201510916597A CN 105389258 B CN105389258 B CN 105389258B
Authority
CN
China
Prior art keywords
message
time
execution
target
main thread
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.)
Active
Application number
CN201510916597.9A
Other languages
English (en)
Other versions
CN105389258A (zh
Inventor
巩晓波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201510916597.9A priority Critical patent/CN105389258B/zh
Publication of CN105389258A publication Critical patent/CN105389258A/zh
Priority to PCT/CN2016/077653 priority patent/WO2017096734A1/zh
Application granted granted Critical
Publication of CN105389258B publication Critical patent/CN105389258B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Abstract

本发明实施例提供一种程序检测方法及装置,其中的方法可包括:检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。本发明可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。

Description

一种程序检测方法及装置
技术领域
本发明涉及通信技术领域,具体涉及一种程序检测方法及装置。
背景技术
Android应用程序是由消息驱动的,包括界面的显示以及程序逻辑的执行。其中界面显示是在主线程中以一连串的屏幕刷新消息的形式不停的驱动刷新的。例如当用户手指滑动一个列表时,系统就会构造一个屏幕刷新消息抛到主线程的消息队列中,只有当这个消息之前的消息都执行完毕后,这个消息才会执行,当这个消息执行时屏幕才会显示下一帧的内容。而程序开发者的功能逻辑也是以消息的形式在主线程中排队的,如果一个由开发人员抛出的程序逻辑消息因为本身执行时间过长而阻塞了屏幕刷新消息的话,屏幕显示卡顿就发生了,现有技术中无法精确定位产生卡顿的消息。
发明内容
本发明实施例提供一种程序检测方法及装置,可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。
本发明第一方面提供一种程序检测方法,可包括:
检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;
根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
本发明第二方面提供一种程序检测装置,可包括:
检测模块,用于检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;
确定模块,用于根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
确定输出模块,用于若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
实施本发明实施例,具有如下有益效果:
本发明实施例,检测主线程的消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间,根据第一时间与第二时间,确定目标消息的执行时长,若执行时长大于预设阈值,则确定目标消息的执行导致屏幕卡顿,并输出目标消息,这种方式可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种程序检测方法的流程图;
图2为本发明实施例提供的另一种程序检测方法的流程图;
图3为本发明实施例提供的又一种程序检测方法的流程图;
图4为本发明实施例提供的一种屏幕刷新消息执行示意图;
图5为本发明实施例提供的一种程序卡顿示意图;
图6为本发明实施例提供的一种检测程序卡顿的示意图;
图7为本发明实施例提供的一种程序检测装置的结构示意图;
图8为本发明实施例提供的一种检测模块的结构示意图;
图9为本发明实施例提供的另一种检测模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面将结合附图1-附图6,对本发明实施例提供的程序检测方法进行详细介绍。
请参照图1,为本发明实施例提供的一种程序检测方法的流程图;该方法可包括以下步骤S100-步骤S102。
S100,检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;
具体实施例中,Android应用程序是由消息驱动的,包括界面的显示以及程序逻辑的执行。其中界面的显示是在主线程中以一连串的屏幕刷新消息的形式不停的驱动刷新的。例如当用户手指滑动一个列表时,系统就会构造一个屏幕刷新消息抛到主线程的消息队列中,只有当这个屏幕刷新消息之前的消息都执行完毕后,这个消息才会执行,当这个屏幕刷新消息执行时屏幕才会显示下一帧的内容。一般来说屏幕刷新的频率是60fps,也就是说每个屏幕刷新消息执行的时间不能超过16毫秒,如果超过这个时长的话,用户就会感觉到卡顿。如图4所示,即是屏幕刷新消息执行的主线程示意图,屏幕刷新消息以16毫秒的频率在主线程中执行。
往往程序开发者的一些功能逻辑也是以消息的形式在主线程中排队执行的,比如程序逻辑消息,如果一个由开发人员抛出的程序逻辑消息因为本身执行时间过长而阻塞了屏幕刷新消息的话,卡顿就发生了。如图5所示,若该程序逻辑消息的执行时间超过预设阈值,则阻塞了屏幕刷新消息的执行,屏幕出现卡顿。
而在实际研发过程中,是需要能够准确定位到产生卡顿的程序逻辑消息,这样可以将该程序逻辑消息移除主线程执行。本发明提供了一种机制,能够自动检测出这种执行时间过长的消息。
在主线程中,各个消息是以消息队列的形式依次排队执行的,获取主线程消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间。目标消息可以是主线程的消息队列前端的消息,即是即将执行的消息,该消息的类型可能为程序逻辑消息,也可能为屏幕刷新消息。
S101,根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
具体实施例中,根据目标消息执行的第一时间以及目标消息之后的消息执行的第二时间,即可确定目标消息的执行时长,如图5所示,根据主线程第一个屏幕刷新消息执行的第一时间和该屏幕刷新消息之后的程序逻辑消息执行的第二时间,即可计算出第一个屏幕刷新消息的执行时长。
具体可选的,所述根据所述第一时间与所述第二时间,确定所述目标消息的执行时长,包括:
计算所述第一时间和所述第二时间之间所形成的时长,并将所述时长确定为所述目标消息的执行时长。
具体实施例中,计算第一时间和第二时间之间所形成的时长,可选的,计算方法可以是将第二时间点减去第一时间点,例如,第一时间是第5ms(相对于整个程序执行时间),第二时间是第17ms(相对于整个程序执行时间),则时长为17ms-5ms=12ms,该时长即是目标消息的执行时长。
S102,若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
具体实施例中,若执行时长大于预设阈值,则说明该目标消息的执行时间过长,可能阻塞屏幕刷新消息的执行,从而导致屏幕卡顿,为了能够使得研发人员明确知道是哪一个目标消息导致卡顿,输出该执行时间过长的目标消息。
本发明实施例,检测主线程的消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间,根据第一时间与第二时间,确定目标消息的执行时长,若执行时长大于预设阈值,则确定目标消息的执行导致屏幕卡顿,并输出目标消息,这种方式可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。
请参照图2,为本发明实施例提供的另一种程序检测方法的流程图;该方法可包括以下步骤S200-步骤S204。
S200,当检测到所述第一检测消息执行时,将所述第一检测消息的执行时间确定为所述主线程的消息队列中目标消息执行的第一时间;
具体实施例中,为了能够检测执行目标消息的第一时间,以及执行该目标消息之后的消息的第二时间,如图6所示,本发明在程序启动的时候会启动一个检测线程用于监控主线程的消息执行。实现方法可以是不断的向主线程的消息队列前端抛送检测消息。
如图6所示,当主线程的刷新消息正在执行时,在主线程的消息队列前端设置第一检测消息“0”,当第一检测消息“0”执行时,将该第一检测消息“0”的执行时间确定为该主线程的消息队列中目标消息(即是程序逻辑消息)执行的第一时间。
S201,将所述目标消息出队,并继续在所述主线程的消息队列的前端设置第二检测消息;
具体实施例中,第一检测消息的执行时间非常短,几乎在微秒级别,当第一检测消息执行时,目标消息(即是程序逻辑消息)出队执行,同时在主线程的消息队列的前端继续设置第二检测消息“1”。
S202,当执行到所述第二检测消息时,将所述第二检测消息的执行时间确定为在所述目标消息之后的消息执行的第二时间。
具体实施例中,当第二检测消息“1”执行时,将该第二检测消息“1”的执行时间确定为该目标消息(即是程序逻辑消息)之后的消息(即是屏幕刷新消息)执行的第二时间。因为当第二检测消息“1”执行到时,则说明程序逻辑消息刚好执行完。
根据第一时间和第二时间可以确定该目标消息(即是程序逻辑消息)的执行时长,执行时长小于预设阈值,则目标消息后的消息出队,并向主线程消息队列前端继续抛送下一个检测消息,执行时长大于预设阈值,说明主线程中正在执行的目标消息太耗时,可以引起界面的卡顿,这时候本发明输出用于定位目标消息的查询信息,根据查询信息查询目标信息,并输出该目标消息,
S203,根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
S204,若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
本发明实施例步骤S203-S204,请参照图1的实施例步骤S101-S102,在此不再赘述。
本发明实施例,检测主线程的消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间,根据第一时间与第二时间,确定目标消息的执行时长,若执行时长大于预设阈值,则确定目标消息的执行导致屏幕卡顿,并输出目标消息,这种方式可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。
请参照图3,为本发明实施例提供的又一种程序检测方法的流程图;该方法可包括以下步骤S300-步骤S304。
S300,在系统所述主线程的消息执行函数上注册回调通知;
具体实施例中,为了能够监测主线程中每一个函数的执行时间,在系统的主线程的消息执行函数上注册回调通知。
S301,当所述主线程的消息队列中目标消息执行时,获取系统的第一回调通知,所述第一回调通知携带所述目标消息执行的第一时间;
具体实施例中,当系统执行主线程的消息队列中的目标消息时,即可返回第一回调通知,该第一回调通知携带该目标消息执行的第一时间。
S302,当所述目标消息之后的消息执行时,获取系统的第二回调通知,所述第二回调通知携带所述目标消息之后的消息执行的第二时间点。
具体实施例中,当系统执行主线程的消息队列中的该目标消息之后的消息时,也可返回第二回调通知,该第二回调通知携带该目标消息之后的消息的执行第二时间。
S303,根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
S304,若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
本发明实施例步骤S303-S304,请参照图1的实施例步骤S101-S102,在此不再赘述。
本发明实施例,检测主线程的消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间,根据第一时间与第二时间,确定目标消息的执行时长,若执行时长大于预设阈值,则确定目标消息的执行导致屏幕卡顿,并输出目标消息,这种方式可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。
下面将结合附图7-附图9,对本发明实施例提供的一种程序检测装置进行详细介绍。
请参阅图7,为本发明实施例提供的一种程序检测装置的结构示意图;该装置可包括:检测模块100、确定模块101以及确定输出模块102;
检测模块100,用于检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;
具体实施例中,Android应用程序是由消息驱动的,包括界面的显示以及程序逻辑的执行。其中界面的显示是在主线程中以一连串的屏幕刷新消息的形式不停的驱动刷新的。例如当用户手指滑动一个列表时,系统就会构造一个屏幕刷新消息抛到主线程的消息队列中,只有当这个屏幕刷新消息之前的消息都执行完毕后,这个消息才会执行,当这个屏幕刷新消息执行时屏幕才会显示下一帧的内容。一般来说屏幕刷新的频率是60fps,也就是说每个屏幕刷新消息执行的时间不能超过16毫秒,如果超过这个时长的话,用户就会感觉到卡顿。如图4所示,即是屏幕刷新消息执行的主线程示意图,屏幕刷新消息以16毫秒的频率在主线程中执行。
往往程序开发者的一些功能逻辑也是以消息的形式在主线程中排队执行的,比如程序逻辑消息,如果一个由开发人员抛出的程序逻辑消息因为本身执行时间过长而阻塞了屏幕刷新消息的话,卡顿就发生了。如图5所示,若该程序逻辑消息的执行时间超过预设阈值,则阻塞了屏幕刷新消息的执行,屏幕出现卡顿。
而在实际研发过程中,是需要能够准确定位到产生卡顿的程序逻辑消息,这样可以将该程序逻辑消息移除主线程执行。本发明提供了一种机制,能够自动检测出这种执行时间过长的消息。
在主线程中,各个消息是以消息队列的形式依次排队执行的,获取主线程消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间。目标消息可以是主线程的消息队列前端的消息,即是即将执行的消息,该消息的类型可能为程序逻辑消息,也可能为屏幕刷新消息。
检测模块100可以有以下两种可选的实施方式:
在第一种可选的实施方式中,如图8所示,检测模块100包括第一确定单元1000、设置单元1001以及第二确定单元1002;
第一确定单元1000,用于当检测到所述第一检测消息执行时,将所述第一检测消息的执行时间确定为所述主线程的消息队列中目标消息执行的第一时间;
具体实施例中,为了能够检测执行目标消息的第一时间,以及执行该目标消息之后的消息的第二时间,如图6所示,本发明在程序启动的时候会启动一个检测线程用于监控主线程的消息执行。实现方法可以是不断的向主线程的消息队列前端抛送检测消息。
如图6所示,当主线程的刷新消息正在执行时,在主线程的消息队列前端设置第一检测消息“0”,当第一检测消息“0”执行时,第一确定单元1000将该第一检测消息“0”的执行时间确定为该主线程的消息队列中目标消息(即是程序逻辑消息)执行的第一时间。
设置单元1001,用于将所述目标消息出队,并继续在所述主线程的消息队列的前端设置第二检测消息;
具体实施例中,第一检测消息的执行时间非常短,几乎在微秒级别,当第一检测消息执行时,目标消息(即是程序逻辑消息)出队执行,设置单元1001同时在主线程的消息队列的前端继续设置第二检测消息“1”。
第二确定单元1002,用于当执行到所述第二检测消息时,将所述第二检测消息的执行时间确定为在所述目标消息之后的消息执行的第二时间。
具体实施例中,当第二检测消息“1”执行时,第二确定单元1002将该第二检测消息“1”的执行时间确定为该目标消息(即是程序逻辑消息)之后的消息(即是屏幕刷新消息)执行的第二时间。因为当第二检测消息“1”执行到时,则说明程序逻辑消息刚好执行完。
根据第一时间和第二时间可以确定该目标消息(即是程序逻辑消息)的执行时长,执行时长小于预设阈值,则目标消息后的消息出队,并向主线程消息队列前端继续抛送下一个检测消息,执行时长大于预设阈值,说明主线程中正在执行的目标消息太耗时,可以引起界面的卡顿,输出用于定位目标消息的查询信息,根据查询信息查询目标信息,并输出该目标消息,方便开发人员定位卡顿的源头。
在第二种可选的实施方式中,所述装置还包括注册模块,检测模块100可以包括第一获取单元1003以及第二获取单元1004;
注册模块,用于在系统所述主线程的消息执行函数上注册回调通知;
具体实施例中,为了能够监测主线程中每一个函数的执行时间,在系统的主线程的消息执行函数上注册回调通知。
第一获取单元1003,用于当所述主线程的消息队列中目标消息执行时,获取系统的第一回调通知,所述第一回调通知携带所述目标消息执行的第一时间;
具体实施例中,当系统执行主线程的消息队列中的目标消息时,即可返回第一回调通知,第一获取单元1003获取系统的第一回调通知,该第一回调通知携带该目标消息执行的第一时间。
第二获取单元1004,用于当所述目标消息之后的消息执行时,获取系统的第二回调通知,所述第二回调通知携带所述目标消息之后的消息执行的第二时间点。
具体实施例中,当系统执行主线程的消息队列中的该目标消息之后的消息时,也可返回第二回调通知,该第二回调通知携带该目标消息之后的消息的执行第二时间。
确定模块101,用于根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
具体实施例中,确定模块101根据目标消息执行的第一时间以及目标消息之后的消息执行的第二时间,即可确定目标消息的执行时长,如图5所示,根据主线程第一个屏幕刷新消息执行的第一时间和该屏幕刷新消息之后的程序逻辑消息执行的第二时间,即可计算出第一个屏幕刷新消息的执行时长。
可选的,所述确定模块101具体用于计算所述第一时间和所述第二时间之间所形成的时长,并将所述时长确定为所述目标消息的执行时长。
具体实施例中,计算第一时间和第二时间之间所形成的时长,可选的,计算方法可以是将第二时间点减去第一时间点,例如,第一时间是第5ms(相对于整个程序执行时间),第二时间是第17ms(相对于整个程序执行时间),则时长为17ms-5ms=12ms,该时长即是目标消息的执行时长。
确定输出模块102,用于若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
具体实施例中,若执行时长大于预设阈值,则说明该目标消息的执行时间过长,可能阻塞屏幕刷新消息的执行,从而导致屏幕卡顿,为了能够使得研发人员明确知道是哪一个目标消息导致卡顿,确定输出模块102输出该执行时间过长的目标消息。
本发明实施例,检测主线程的消息队列中目标消息执行的第一时间以及在目标消息之后的消息执行的第二时间,根据第一时间与第二时间,确定目标消息的执行时长,若执行时长大于预设阈值,则确定目标消息的执行导致屏幕卡顿,并输出目标消息,这种方式可通过检测主线程中目标消息的执行时长,精确定位输出导致屏幕卡顿的目标消息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,附图7-附图9所示程序检测装置的模块对应的程序可存储在程序检测装置的可读存储介质内,并被该程序检测装置中的至少一个处理器执行,以实现上述程序检测方法,该方法包括图1至图6中各方法实施例所述的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (11)

1.一种程序检测方法,其特征在于,包括:
检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;所述目标消息为所述主线程的消息队列前端的消息;所述目标消息的类型为程序逻辑消息或者屏幕刷新消息;所述第一时间和所述第二时间是基于检测线程向所述主线程的消息队列前端所抛送的检测消息所确定的;所述检测线程为在程序启动时所启动的用于监控主线程的消息执行的线程;
根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
2.如权利要求1所述的方法,其特征在于,所述主线程的消息队列包括至少一个消息,所述至少一个消息中每个消息的类型为程序逻辑消息或者屏幕刷新消息。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一时间与所述第二时间,确定所述目标消息的执行时长,包括:
计算所述第一时间和所述第二时间之间所形成的时长,并将所述时长确定为所述目标消息的执行时长。
4.如权利要求1所述的方法,其特征在于,所述主线程的消息队列前端设置第一检测消息,所述第一检测消息在所述目标消息之前;
所述检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间,包括:
当检测到所述第一检测消息执行时,将所述第一检测消息的执行时间确定为所述主线程的消息队列中目标消息执行的第一时间;
将所述目标消息出队,并继续在所述主线程的消息队列的前端设置第二检测消息;
当执行到所述第二检测消息时,将所述第二检测消息的执行时间确定为在所述目标消息之后的消息执行的第二时间。
5.如权利要求1所述的方法,其特征在于,所述检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间之前,还包括:
在系统所述主线程的消息执行函数上注册回调通知;
所述检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间,包括:
当所述主线程的消息队列中目标消息执行时,获取系统的第一回调通知,所述第一回调通知携带所述目标消息执行的第一时间;
当所述目标消息之后的消息执行时,获取系统的第二回调通知,所述第二回调通知携带所述目标消息之后的消息执行的第二时间点。
6.一种程序检测装置,其特征在于,包括:
检测模块,用于检测主线程的消息队列中目标消息执行的第一时间以及在所述目标消息之后的消息执行的第二时间;所述目标消息为所述主线程的消息队列前端的消息;所述目标消息的类型为程序逻辑消息或者屏幕刷新消息;所述第一时间和所述第二时间是基于检测线程向所述主线程的消息队列前端所抛送的检测消息所确定的;所述检测线程为在程序启动时所启动的用于监控主线程的消息执行的线程;
确定模块,用于根据所述第一时间与所述第二时间,确定所述目标消息的执行时长;
确定输出模块,用于若所述执行时长大于预设阈值,则确定所述目标消息的执行导致屏幕卡顿,并输出所述目标消息。
7.如权利要求6所述的装置,其特征在于,所述主线程的消息队列包括至少一个消息,所述至少一个消息中每个消息的类型为程序逻辑消息或者屏幕刷新消息。
8.如权利要求7所述的装置,其特征在于,所述确定模块具体用于计算所述第一时间和所述第二时间之间所形成的时长,并将所述时长确定为所述目标消息的执行时长。
9.如权利要求6所述的装置,其特征在于,所述主线程的消息队列前端设置第一检测消息,所述第一检测消息在所述目标消息之前;所述检测模块包括:
第一确定单元,用于当检测到所述第一检测消息执行时,将所述第一检测消息的执行时间确定为所述主线程的消息队列中目标消息执行的第一时间;
设置单元,用于将所述目标消息出队,并继续在所述主线程的消息队列的前端设置第二检测消息;
第二确定单元,用于当执行到所述第二检测消息时,将所述第二检测消息的执行时间确定为在所述目标消息之后的消息执行的第二时间。
10.如权利要求6所述的装置,其特征在于,所述装置还包括:
注册模块,用于在系统所述主线程的消息执行函数上注册回调通知;
所述检测模块包括:
第一获取单元,用于当所述主线程的消息队列中目标消息执行时,获取系统的第一回调通知,所述第一回调通知携带所述目标消息执行的第一时间;
第二获取单元,用于当所述目标消息之后的消息执行时,获取系统的第二回调通知,所述第二回调通知携带所述目标消息之后的消息执行的第二时间点。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-5任一项所述的方法。
CN201510916597.9A 2015-12-10 2015-12-10 一种程序检测方法及装置 Active CN105389258B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510916597.9A CN105389258B (zh) 2015-12-10 2015-12-10 一种程序检测方法及装置
PCT/CN2016/077653 WO2017096734A1 (zh) 2015-12-10 2016-03-29 一种程序检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510916597.9A CN105389258B (zh) 2015-12-10 2015-12-10 一种程序检测方法及装置

Publications (2)

Publication Number Publication Date
CN105389258A CN105389258A (zh) 2016-03-09
CN105389258B true CN105389258B (zh) 2020-08-14

Family

ID=55421564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510916597.9A Active CN105389258B (zh) 2015-12-10 2015-12-10 一种程序检测方法及装置

Country Status (2)

Country Link
CN (1) CN105389258B (zh)
WO (1) WO2017096734A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389258B (zh) * 2015-12-10 2020-08-14 腾讯科技(深圳)有限公司 一种程序检测方法及装置
CN106708613B (zh) * 2016-05-05 2019-09-17 腾讯科技(深圳)有限公司 一种输入控制灵敏度的检测方法及检测装置
CN106484507B (zh) * 2016-09-18 2019-11-29 天脉聚源(北京)传媒科技有限公司 一种应用线程的处理方法及装置
CN106776253B (zh) * 2016-12-08 2020-08-04 武汉斗鱼网络科技有限公司 一种界面卡顿监测方法及装置
CN108345524B (zh) * 2017-01-22 2021-12-14 腾讯科技(深圳)有限公司 应用程序监控方法及应用程序监控装置
CN107038107B (zh) * 2017-03-09 2020-03-17 武汉斗鱼网络科技有限公司 一种获取应用卡顿信息的方法及装置
CN106959918B (zh) * 2017-04-25 2021-04-13 百度在线网络技术(北京)有限公司 用于评测机器人操作系统中的操作的方法和装置
CN107273278B (zh) * 2017-06-02 2019-10-25 Oppo广东移动通信有限公司 卡顿确定方法、装置及终端
CN109074303B (zh) * 2017-06-27 2021-08-20 华为技术有限公司 一种卡顿检测方法及装置
CN107678945B (zh) * 2017-09-04 2020-04-21 清华大学 一种网页应用阻塞的判断方法及装置
CN107590060A (zh) * 2017-09-05 2018-01-16 杭州时趣信息技术有限公司 一种终端卡顿的分析方法及装置
CN111095221B (zh) * 2017-10-09 2023-11-03 华为技术有限公司 一种刷新显示异常处理的方法及终端
CN109840177B (zh) * 2017-11-24 2021-08-24 腾讯科技(深圳)有限公司 一种卡顿的处理方法及相关设备
CN109491907A (zh) * 2018-11-05 2019-03-19 网易(杭州)网络有限公司 一种卡顿检测方法、装置、电子设备和存储介质
CN110888781B (zh) * 2019-11-21 2021-11-16 腾讯科技(深圳)有限公司 一种应用卡顿检测方法及检测装置
CN114356789A (zh) * 2022-03-21 2022-04-15 大鲲智联(成都)科技有限公司 应用程序检测方法、装置、电子设备和计算机可读介质
CN115268565A (zh) * 2022-06-27 2022-11-01 北京五八信息技术有限公司 定时器的控制方法、装置及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876938A (zh) * 2009-11-11 2010-11-03 北京神州泰岳软件股份有限公司 一种基于消息队列的应用软件响应时间测量方法
CN103412812A (zh) * 2013-08-23 2013-11-27 北京奇虎科技有限公司 浏览器运行状态监测方法及装置
CN104426800A (zh) * 2013-08-22 2015-03-18 塔塔顾问服务有限公司 用于在对等通信网络中管理消息队列的系统和方法
CN104834597A (zh) * 2015-03-06 2015-08-12 深信服网络科技(深圳)有限公司 应用响应时长的测量方法和系统
CN104965773A (zh) * 2015-07-09 2015-10-07 网易(杭州)网络有限公司 终端、卡顿检测方法、装置及游戏卡顿检测方法、装置
CN104991855A (zh) * 2015-06-16 2015-10-21 广州华多网络科技有限公司 界面卡顿处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007251232A (ja) * 2006-03-13 2007-09-27 Oki Electric Ind Co Ltd 電話機能を備えた映像再生装置
CN104184875B (zh) * 2013-05-20 2019-01-11 中兴通讯股份有限公司 终端调试端口的开启方法、装置与终端
US9501813B2 (en) * 2014-04-30 2016-11-22 Vonage Business Inc. Systems and methods for controlling a display screen of a portable computing device
CN105022627B (zh) * 2015-06-02 2018-04-06 上海斐讯数据通信技术有限公司 一种Android系统中View间的通信方法
CN105389258B (zh) * 2015-12-10 2020-08-14 腾讯科技(深圳)有限公司 一种程序检测方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876938A (zh) * 2009-11-11 2010-11-03 北京神州泰岳软件股份有限公司 一种基于消息队列的应用软件响应时间测量方法
CN104426800A (zh) * 2013-08-22 2015-03-18 塔塔顾问服务有限公司 用于在对等通信网络中管理消息队列的系统和方法
CN103412812A (zh) * 2013-08-23 2013-11-27 北京奇虎科技有限公司 浏览器运行状态监测方法及装置
CN104834597A (zh) * 2015-03-06 2015-08-12 深信服网络科技(深圳)有限公司 应用响应时长的测量方法和系统
CN104991855A (zh) * 2015-06-16 2015-10-21 广州华多网络科技有限公司 界面卡顿处理方法及装置
CN104965773A (zh) * 2015-07-09 2015-10-07 网易(杭州)网络有限公司 终端、卡顿检测方法、装置及游戏卡顿检测方法、装置

Also Published As

Publication number Publication date
CN105389258A (zh) 2016-03-09
WO2017096734A1 (zh) 2017-06-15

Similar Documents

Publication Publication Date Title
CN105389258B (zh) 一种程序检测方法及装置
US10445132B2 (en) Method and apparatus for switching applications
CN105740326B (zh) 浏览器的线程状态监测方法及装置
US20170242578A1 (en) Method and a device for controlling a moving object, and a mobile apparatus
EP2983086A1 (en) System fault detection and processing method, device, and computer readable storage medium
WO2016032806A4 (en) User interface for limiting notifications and alerts
RU2012146408A (ru) Способ, устройство и компьютерный программный продукт для объединения дисплеев множества устройств
JP2017517072A5 (zh)
JP2017523674A5 (zh)
US20140007103A1 (en) Concurrent execution of a computer software application along multiple decision paths
US20170177405A1 (en) Switching Method, Switching System And Terminal For System And/Or Application Program
JP2011123885A5 (zh)
MX2015004311A (es) Metodo para agregar superindices de aplicaciones y dispositivo asociado.
US9674787B2 (en) Information processing method and electronic device
US20150007336A1 (en) Information processing method, apparatus, and system
RU2016112906A (ru) Способ и устройство для взаимодействия с приложением
RU2016141136A (ru) Устройство и способ обработки вызова
US20170168628A1 (en) Method and electronic device for split-screen display
US9921806B2 (en) Method and apparatus for switching audio output device
WO2019091455A1 (zh) 触摸识别方法、触摸装置
WO2015185015A1 (en) Method and apparatus for monitoring security of terminal system
US20190054371A1 (en) Control of a video display headset using input from sensors disposed about the brain of a user
US20140168066A1 (en) Method and electronic device for controlling data transmission
US10162054B2 (en) Distance measuring device
US20120059901A1 (en) System and method for providing social networking content in widget

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant