卡慢异常定位方法、电子设备及系统与流程

文档序号:14656760发布日期:2018-06-12 05:33阅读:151来源:国知局

本申请涉及计算机技术领域,尤其涉及一种卡慢异常定位方法、电子设备及系统。



背景技术:

应用程序在运行过程中经常发生响应缓慢或无响应等问题,这些问题统称为卡慢问题。为改进应用程序或修复卡慢问题,需要定位发生卡慢问题的原因。

在现有技术中,当应用程序出现异常时,一般是通过应用程序的日志文件来查找原因。但是,日志文件只能分析类似死循环的代码问题,对于更加精细地瞬时卡慢现象难以有效定位。



技术实现要素:

本申请提供一种卡慢异常定位方法、电子设备及系统,用以准确定位卡慢现象的发生原因。

为达到上述目的,本申请的实施例采用如下技术方案:

第一方面,提供了一种卡慢异常定位方法,包括:

根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象;

抓取所述卡慢现象发生时所述待处理应用程序的堆栈上下文;

根据所述堆栈上下文,定位所述卡慢现象的发生原因。

第二方面,提供了一种卡慢异常定位方法,包括:

接收客户端发送的崩溃文件,所述崩溃文件是所述客户端根据待处理应用程序发生卡慢现象时的堆栈上下文生成的;

提取所述崩溃文件具有的特征;

将所述崩溃文件具有的特征在已标记特征中进行匹配;

获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

第三方面,提供了一种电子设备,包括:

存储器,用于存储待处理应用程序,所述待处理应用程序包括业务功能代码和卡慢异常定位功能代码;

处理器,耦合至所述存储器,用于执行所述业务功能代码实现所述待处理应用程序的业务逻辑,并执行所述卡慢异常定位功能代码,以用于:

根据所述待处理应用程序中界面线程的运行状态,确定发生卡慢现象;抓取所述卡慢现象发生时所述待处理应用程序的堆栈上下文;根据所述堆栈上下文,定位所述卡慢现象的发生原因。

第四方面,提供了一种电子设备,包括:

存储器,用于存储卡慢异常定位程序;

处理器,耦合至所述存储器,用于执行所述卡慢异常定位程序,以用于:

根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象;

抓取所述卡慢现象发生时所述待处理应用程序的堆栈上下文;

根据所述堆栈上下文,定位所述卡慢现象的发生原因。

第五方面,提供一种服务器,包括:

存储器,用于存储程序;

通信组件,用于接收客户端发送的崩溃文件,所述崩溃文件是所述客户端根据待处理应用程序发生卡慢现象时的堆栈上下文生成的;

处理器,耦合至所述存储器和所述通信组件,用于执行所述程序,以用于:

提取所述崩溃文件具有的特征;

将所述崩溃文件具有的特征在已标记特征中进行匹配;

获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

第六方面,提供了一种卡慢异常定位系统,包括:服务器和客户端;

所述客户端包括:

监控模块,用于根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象;

抓取模块,用于抓取所述卡慢现象发生时所述待处理应用程序的堆栈上下文,并将所述堆栈文件保存为崩溃文件;

上报模块,用于将所述崩溃文件发送给所述服务器,并接收所述服务器发送的卡慢异常定位信息,所述卡慢异常定位信息包括所述服务器定位到的所述卡慢现象的发生原因;

所述服务器,用于接收所述崩溃文件,根据所述崩溃文件定位所述卡慢现象的发生原因,并向所述客户端发送所述卡慢异常定位信息。

在本申请实施例中,根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象,及时抓取卡慢现象发生时待处理应用程序的堆栈上下文,基于所抓取的堆栈上下文,定位卡慢现象的发生原因,解决了现有技术无法准确定位卡慢现象的发生原因的问题。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1a为本申请一实施例提供的卡慢异常定位系统的结构示意图;

图1b为本申请另一实施例提供的卡慢异常定位系统的结构示意图;

图2a为本申请又一实施例提供的卡慢异常定位方法的流程示意图;

图2b为本申请又一实施例提供的卡慢异常定位方法的流程示意图;

图3为本申请又一实施例提供的卡慢异常定位装置的结构示意图;

图4为本申请又一实施例提供的电子设备的结构示意图;

图5为本申请又一实施例提供的电子设备的结构示意图;

图6为本申请又一实施例提供的服务器的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

应用程序在运行过程中经常发生响应缓慢或无响应等卡慢问题。为改进应用程序或修复卡慢问题,需要定位卡慢问题的发生原因,但现有技术无法准确定位卡慢现象的发生原因。

针对上述问题,本申请一实施例提供一种卡慢异常定位系统,用以准确定位卡慢现象的发生原因。如图1a所示,该系统包括:服务器10和客户端20。

其中,客户端20部署于待处理应用程序一端。所述待处理应用程序是指需要定位卡慢现象的发生原因的应用程序,例如可以是千牛、旺旺、QQ、淘宝、京东、滴滴等任何具有人机交互界面的应用程序。如图1a所示,客户端20的一种实现结构,包括:监控模块21、抓取模块22和上报模块23。

监控模块21,用于根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象。其中,界面线程是指待处理应用程序中用于处理用户输入、响应事件和消息的线程。界面线程包含一个消息循环,并关联一个主窗口。消息循环为主窗口及其子窗口分发消息,进行消息驱动,使得主窗口可以响应用户的交互操作以及其他的系统事件。如果在界面线程的某个地方长时间无法返回结果甚至停住,这说明界面线程不能及时甚至无法处理窗口消息了,就会出现卡慢现象。故监控模块21可通过界面线程的运行状态确定发生卡慢现象。

卡慢现象主要是指应用程序运行过程中,发生的响应缓慢或无响应等问题,所述响应缓慢或无响应主要是指用户能够感知的,以及用户无明显感知的轻微卡慢现象,例如与人机交互界面相关的响应问题。

造成卡慢现象的原因有很多,例如可能是界面线程做了比较耗时的操作,因不能及时返回结果导致人机交互界面的刷新和操作受到影响,出现卡慢现象,但并不限于此。其中,界面线程所做的比较耗时的操作可能是比较复杂耗时的运算,或是调用IO操作,或是发起net请求,但不限于此。

抓取模块22,与监控模块21连接,用于在监控模块21确定发生卡慢现象时,抓取卡慢现象发生时待处理应用程序的堆栈上下文。上报模块23,与抓取模块22连接,用于将抓取模块22所抓取的堆栈文件保存为崩溃(dump)文件,将崩溃文件发送给服务器10。

服务器10,用于接收上报模块23发送的崩溃文件,根据崩溃文件定位卡慢现象的发生原因,并向客户端发送卡慢异常定位信息,所述卡慢异常定位信息包括卡慢现象的发生原因。相应的,上报模块23还用于接收服务器10发送的卡慢异常定位信息,以便针对卡慢现象的发生原因进行相应处理。

在一可选实施方式中,监控模块21可以监控界面线程的响应状态;根据界面线程的响应状态,确定发生卡慢现象。

例如,监控模块21可以向界面线程的窗口发送带有超时参数的消息;正常情况,会在所述超时参数指定的时间内获取到所述消息的返回结果;若未能在所述超时参数指定的时间内获取到所述消息的返回结果,可以认为界面线程在所述超时参数指定的时间内无法响应该消息,即界面线程响应超时,程序发生卡慢。

可选的,服务器10除了根据崩溃文件分析定位卡慢现象的发生原因之外,还可以控制客户端20的运行与否以及为客户端20动态设置运行参数,使得开发人员可以根据程序版本发布的阶段和用户数,实时动态的调整客户端20的运行。例如,服务器10可以向监控模块21发送卡慢异常定位决策信息。相应地,监控模块21还用于接收服务器10发送的卡慢异常定位决策信息。所述卡慢异常定位决策信息包括但不限于:卡慢监控策略(包括控制监控模块21的开关启停、监控频率、卡慢条件等),以及崩溃文件的上传策略等。上传策略可以是实时上传,也可以是周期性上传。这样客户端20可以根据卡慢监控策略监控卡慢现象是否发生,并按照上传策略将崩溃文件上传至服务器10,以供服务器10分析卡慢现象的发生原因。

例如,服务器10可以设置或调整监控模块21的监控频率并下发给监控模块21。基于此,监控模块21可以根据监控频率,周期性地向界面线程的窗口发送带有超时参数的消息,以周期性的监控界面线程是否响应超时。在每个周期内,根据该周期所发送的消息的结果返回情况,判断界面线程是否响应超时。

又例如,服务器10还可以设置卡慢条件,并将卡慢条件下发给监控模块21,以供监控模块21判断是否发生卡慢现象。由服务器10设定判断是否发生卡慢现象所依据的卡慢条件,可以灵活定义卡慢现象,灵活性较强,可适应于不同应用程序和应用场景。

可选的,所述卡慢条件可以是响应超时,响应超时的次数大于预设的次数阈值,或者连续两次响应超时之间的时间间隔小于预设的间隔阈值。基于此,监控模块21根据界面线程的响应状态,确定发生卡慢现象的方式可以是以下任意一种:

第一种:若监控模块21确定界面线程的响应超时,则确定发生卡慢现象。

第二种:若监控模块21确定界面线程响应超时,可以进一步统计界面线程响应超时的次数,若界面线程响应超时的次数大于次数阈值,确定发生卡慢现象。

第三种:若监控模块21确定界面线程响应超时,可以进一步监测界面线程是否连续两次响应超时;若界面线程连续两次响应超时,统计界面线程连续两次响应超时之间的时间间隔;若界面线程连续两次响应超时之间的时间间隔小于间隔阈值,确定发生卡慢现象。

在监控模块21确定发生卡慢现象后,抓取模块22可以抓取卡慢现象发生时待处理应用程序的堆栈上下文,并保存为崩溃文件;由上报模块23将崩溃文件发送给服务器10。

可选的,服务器10分析崩溃文件可以采用但不限于以下方式;

服务器10输出崩溃文件,由技术人员分析崩溃文件,根据分析结果进行特征提取,获得崩溃文件具有的特征;或者,服务器10也可以按照预设的分析模板或规则自动分析崩溃文件并进行特征提取,获得崩溃文件具有的特征。

在提取崩溃文件具有的特征之后,服务器10可以将崩溃文件具有的特征在已标记特征中进行匹配,获取所述崩溃文件匹配中的已标记特征,将所述匹配中的已标记特征对应的原因,作为待处理应用程序发生卡慢现象的原因。在本实施例中,会不断收集已标记特征及可以对应的卡慢原因,所述已标记特征是指通过该特征可以知道对应卡慢原因的特征。

可选的,服务器10还可以根据待处理应用程序的名称和版本等信息,对崩溃文件以及所提取的特征等进行分类存储和排名,以供开发人员在后台对崩溃文件进行分析,定位卡慢现象的发生原因。

在上述可选实施例方式中,所收集到的已标记特征会越来越多,对于崩溃文件的分析就会越来越智能,便于快速定位卡慢现象的发生原因,尤其是发生次数最多的卡慢问题,可以快速解决卡慢问题,加快问题的处理效率。

在一可选实施方式中,客户端20可以部署于待处理应用程序内部,即监控模块21、抓取模块22和上报模块23直接运行在待处理应用程序之内,实现进程内监控。以即时通讯工具旺旺为例,说明该可选实施方式的系统结构,如图1b所示。值得说明的是,由于并不关注旺旺本身的功能,故图1b中仅示出旺旺本身的部分功能模块。或者

在一可选实施方式中,客户端20可以是待处理应用程序之外独立运行的一个应用程序,即监控模块21、抓取模块22和上报模块23运行在待处理应用程序之外,实现进程外监控。该可选实施方式的系统结构可参见图1a所示。或者

在一可选实施方式中,客户端20的部分功能部署于待处理应用程序内部,部分功能部署于待处理应用程序之外。

例如,监控模块21和上报模块23部署于待处理应用程序内部实现,抓取模块22部署于待处理应用程序之外实现。基于该部署方式,客户端20的工作原理如下:

待处理应用程序启动后,可以根据监控配置启动监控模块21;监控模块21被启动后,监控待处理应用程序中界面线程的运行状态,基于界面线程的运行状态,确定是否发生卡慢现象;当确定发生法卡慢现象时,监控模块21会调用抓取模块22抓取卡慢现象发生时待处理应用程序的堆栈上下文;抓取模块22抓取卡慢现象发生时待处理应用程序的堆栈上下文,并将其保存为崩溃文件。可选的,抓取模块22可以将堆栈上下文保存为客户端20指定的磁盘目录中的崩溃文件。上报模块23被启动时或按照设定的上报策略,会检查客户端20指定的磁盘目录中是否有未上传的崩溃文件,若发现有未上传的崩溃文件,向服务器10上报崩溃文件。值得说明的是,崩溃文件的上传,可以是实时的,也可以是非实时的,可由上报策略决定。

本实施例提供的卡慢异常定位系统,客户端根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象,及时抓取卡慢现象发生时待处理应用程序的堆栈上下文,保存为崩溃文件并上传至服务器;服务器根据崩溃文件定位卡慢现象的发生原因,解决了现有技术无法准确定位卡慢现象的发生原因的问题。

针对现有技术中无法定位卡慢现象的发生原因的问题,本申请实施例除了提供卡慢异常定位系统之外,从客户端的角度,还提供了一种卡慢异常定位方法,用以准确定位卡慢现象的发生原因。如图2a所示,该方法包括以下步骤:

201、根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象。

202、抓取卡慢现象发生时待处理应用程序的堆栈上下文。

203、根据堆栈上下文,定位卡慢现象的发生原因。

卡慢现象主要是指应用程序运行过程中,发生的响应缓慢或无响应等问题,所述响应缓慢或无响应主要是指用户能够感知的,以及用户无明显感知的轻微卡慢现象,例如与人机交互界面相关的响应问题。

基于上述,可以在待处理应用程序内部和/或外部,部署卡慢异常定位功能。所述卡慢异常定位功能主要用于实现本实施例提供的方法流程。具体的,监控待处理应用程序中界面线程的运行状态,根据界面线程的运行状态,确定是否发生卡慢现象;当确定发生卡慢现象时,及时抓取卡慢现象发生时待处理应用程序的堆栈上下文;该堆栈上下文中记录有当时待处理应用程序的运行状态等信息,因此,可以根据所抓取的堆栈上下文,定位卡慢现象的发生原因。

在一可选实施方式中,可以监控界面线程是否响应超时,以确定发生卡慢现象。

可选的,可以向界面线程的窗口发送带有超时参数的消息;判断是否在所述超时参数指定的时间内获取到所述消息的返回结果,若未能在所述超时参数指定的时间内获取到所述消息的返回结果,确定界面线程响应超时。

进一步,可以根据监控频率,周期性地向界面线程的窗口发送所述消息,以便于周期性的监控所述界面线程是否响应超时。在每个周期内,根据该周期所发送的消息的结果返回情况,判断界面线程是否响应超时。

上述监控频率可由服务器动态设置,或者,也可以由人工手动设置。所述监控频率的取值不做限定,视具体应用需求而定。

可选的,根据应用程序和应用需求的不同,确定发生卡慢现象的实施过程也会有所不同。举例说明:服务器可以预先设置判断是否发生卡慢现象所依据的卡慢条件。所述卡慢条件包括但不限于以下任意一种:响应超时,响应超时的次数大于预设的次数阈值,或者连续两次响应超时之间的时间间隔小于预设的间隔阈值。

基于上述卡慢条件,确定发生卡慢现象的实施方式包括以下至少一种:

第一种:若界面线程响应超,则确定发生卡慢现象。

第二种:若界面线程响应超时,进一步统计界面线程响应超时的次数,若界面线程响应超时的次数大于次数阈值,则确定发生卡慢现象。

第三种:若界面线程响应超,进一步监测界面线程是否连续两次响应超时;若界面线程连续两次响应超时,统计界面线程连续两次响应超时之间的时间间隔;若界面线程连续两次响应超时之间的时间间隔小于间隔阈值,则确定发生卡慢现象。

在确定发生卡慢现象时,及时抓取卡慢现象发生时待处理应用程序的堆栈上下文,以便于定位卡慢现象的发生原因。可选的,可以将堆栈上下文保存为崩溃文件,基于所述崩溃文件,定位卡慢现象的发生原因。所述崩溃文件可以存储于指定的磁盘目录中。其中,堆栈上下文被保存为指定的磁盘目录中的崩溃文件,使得可以在任意时间定位卡慢现象的发生原因,灵活性较强。

在一可选实施方式中,定位卡慢现象的发生原因的操作可由服务器来完成。基于此,可以将崩溃文件发送给服务器,以供服务器根据崩溃文件定位卡慢现象的发生原因,并接收服务器发送的异常定位信息,所述异常定位信息包括服务器定位到的卡慢现象的发生原因。

在一可选实施方式中,还可接收服务器发送的异常定位决策信息,所述卡慢异常定位决策信息包括卡慢监控策略(包括控制监控过程的启停、监控频率、卡慢条件等),以及崩溃文件的上传策略等。基于此,可以根据卡慢监控策略监控卡慢现象是否发生,并按照上传策略将崩溃文件上传至服务器,以供服务器分析卡慢现象的发生原因。上传策略可以是实时上传,也可以是周期性上传。或者

在一可选实施方式中,定位卡慢现象的发生原因的操作可在本地来完成。基于此,在获得崩溃文件后,无需上传给服务器,可以直接在本地根据崩溃文件定位卡慢现象的发生原因。

可选的,上述基于崩溃文件,定位卡慢现象的发生原因可以包括:提取崩溃文件具有的特征;将崩溃文件具有的特征在已标记特征中进行匹配,获取所述崩溃文件匹配中的已标记特征,将所述匹配中的已标记特征对应的原因,作为待处理应用程序发生卡慢现象的原因。在本实施例中,会不断收集已标记特征及可以对应的卡慢原因,所述已标记特征是指通过该特征可以知道对应卡慢原因的特征。

可选的,上述提取崩溃文件具有的特征可以是:输出崩溃文件,由技术人员分析崩溃文件,根据分析结果进行特征提取,获得崩溃文件具有的特征;或者,也可以按照预设的分析模板或规则自动分析崩溃文件并进行特征提取,获得崩溃文件具有的特征。

本实施例提供的卡慢异常定位方法,根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象,及时抓取卡慢现象发生时待处理应用程序的堆栈上下文,根据堆栈上下文定位卡慢现象的发生原因,解决了现有技术无法准确定位卡慢现象的发生原因的问题。

针对现有技术中无法定位卡慢现象的发生原因的问题,本申请实施例除了提供卡慢异常定位系统之外,从服务器的角度,还提供了一种卡慢异常定位方法,用以准确定位卡慢现象的发生原因。如图2b所示,该方法包括:

301、服务器接收客户端发送的崩溃文件,所述崩溃文件是客户端根据待处理应用程序发生卡慢现象时的堆栈上下文生成的。

其中,关于客户端生成崩溃文件的描述可参见前述实施例,在此不再赘述。

302、服务器提取所述崩溃文件具有的特征。

303、服务器将所述崩溃文件具有的特征在已标记特征中进行匹配;获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

可选的,服务器还可以向客户端发送卡慢异常定位信息,所述异常定位信息包括服务器定位到的卡慢现象的发生原因,以便客户端了解卡慢现象的发生原因,进而针对卡慢现象的发生原因进行相应处理。

可选的,服务器还可以向客户端发送卡慢异常定位决策信息,所述卡慢异常定位决策信息包括服务器卡慢监控策略(包括控制监控模块21的开关启停、监控频率等),以及崩溃文件的上传策略等,以便于客户端根据卡慢监控策略监控卡慢现象是否发生,并按照上传策略将崩溃文件上传至服务器。

在本实施例中,服务器会不断收集已标记特征及可以对应的卡慢原因,所述已标记特征是指通过该特征可以知道对应卡慢原因的特征。

该方法的详细描述可参见前述实施例,在此不再赘述。

在本实施例中,所收集到的已标记特征会越来越多,对于崩溃文件的分析就会越来越智能,便于快速定位卡慢现象的发生原因,尤其是发生次数最多的卡慢问题,可以快速解决卡慢问题,加快问题的处理效率。

针对现有技术中无法定位卡慢现象的发生原因的问题,本申请实施例除了提供卡慢异常定位系统、方法之外,还提供了一种卡慢异常定位装置,用以准确定位卡慢现象的发生原因。如图3所示,该装置包括:监控模块31、抓取模块32和定位模块33。

监控模块31,用于根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象。

抓取模块32,用于抓取卡慢现象发生时待处理应用程序的堆栈上下文。

定位模块33,用于根据抓取模块32所抓取的堆栈上下文,定位卡慢现象的发生原因。

在一可选实施方式中,监控模块31具体用于:监控界面线程的响应状态;根据界面线程的响应状态,确定发生卡慢现象。

进一步,可选的,监控模块31监控界面线程的响应状态,具体为:向界面线程的窗口发送带有超时参数的消息;若未能在所述超时参数指定的时间内获取到所述消息的返回结果,确定界面线程响应超时。

进一步,可选的,监控模块31向界面线程的窗口发送消息,具体为:根据监控频率,周期性地向窗口句柄发送所述消息。

在一可选实施方式中,监控模块31根据界面线程的响应状态,确定发生卡慢现象,具体为:

若界面线程响应超时,确定发生卡慢现象;或者

若界面线程响应超时的次数大于次数阈值,确定发生卡慢现象;或者

若界面线程连续两次响应超时之间的时间间隔小于间隔阈值,确定发生卡慢现象。

在一可选实施方式中,定位模块33根据堆栈上下文,定位卡慢现象的发生原因,具体为:将堆栈上下文保存为崩溃文件;根据崩溃文件,定位卡慢现象的发生原因。

在一可选实施方式中,定位模块33可以在卡慢异常定位装置本地,根据崩溃文件,定位卡慢现象的发生原因。

在一可选实施方式中,定位模块33可以将崩溃文件发送给服务器,由服务器定位卡慢现象的发生原因,并接收服务器发送的卡慢异常定位信息,所述异常定位信息包括服务器定位到的卡慢现象的发生原因。

在一可选实施方式中,监控模块31还可用于接收服务器发送的卡慢异常定位决策信息,所述卡慢异常定位决策信息包括卡慢监控策略(包括控制监控模块31的开关启停、监控频率等),以及崩溃文件的上传策略等。基于此,监控模块31可以根据卡慢监控策略监控卡慢现象是否发生,并按照上传策略将崩溃文件上传至服务器,以供服务器分析卡慢现象的发生原因。

在一可选实施方式中,定位模块33根据崩溃文件,定位卡慢现象的发生原因,具体为:提取所述崩溃文件具有的特征,将所述崩溃文件具有的特征在已标记特征中进行匹配,获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

本实施例提供的卡慢异常定位装置,可执行上述卡慢异常定位方法实施例的流程,有关细节可参见前述方法实施例,在此不再赘述。

本实施例提供的卡慢异常定位装置,根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象,及时抓取卡慢现象发生时待处理应用程序的堆栈上下文,根据堆栈上下文定位卡慢现象的发生原因,解决了现有技术无法准确定位卡慢现象的发生原因的问题。

以上描述了卡慢异常定位装置的内部功能和结构,如图4所示,实际中,该卡慢异常定位装置可实现为一种电子设备,包括:存储器41和处理器42。

存储器41,用于存储待处理应用程序。在本实施例中,所述待处理应用程序除了包括业务功能代码之外,还内嵌有卡慢异常定位功能代码。

除上述待处理应用程序之外,存储器41还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器41可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

处理器42,耦合至存储器41,用于执行存储器41中的待处理应用程序,具体的,一方面执行业务功能代码实现业务逻辑,另一方面执行卡慢异常定位功能代码,以用于:

根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象;抓取卡慢现象发生时待处理应用程序的堆栈上下文;根据堆栈上下文,定位卡慢现象的发生原因。

在一可选实施方式中,处理器42根据所述待处理应用程序中界面线程的运行状态,确定发生卡慢现象,具体为:

监控所述界面线程的响应状态;

根据所述界面线程的响应状态,确定发生所述卡慢现象。

可选的,如图4所示,电子设备还包括:通信组件43。

通信组件43被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件43经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件43还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

基于通信组件43,处理器42监控所述界面线程的响应状态,具体为:

通过通信组件43向所述界面线程的窗口发送带有超时参数的消息;以及监控通信组件43在所述超时参数指定的时间内是否接收到所述消息的返回结果,若监控到通信组件43未能在所述超时参数指定的时间内接收到所述消息的返回结果,确定界面线程响应超时。

通信组件43,耦合至处理器42,用于向界面线程的窗口发送所述消息,并等待接收所述消息的返回结果。

进一步可选的,通信组件43向所述界面线程的窗口发送消息,具体为:根据监控频率,周期性地向所述窗口句柄发送所述消息。

在一可选实施方式中,处理器42定位所述卡慢现象的发生原因,具体为:

若所述界面线程响应超时,确定发生所述卡慢现象;或者

若所述界面线程响应超时的次数大于次数阈值,确定发生所述卡慢现象;或者

若所述界面线程连续两次响应超时之间的时间间隔小于间隔阈值,确定发生所述卡慢现象。

在一可选实施方式中,处理器42定位所述卡慢现象的发生原因,具体为:将所述堆栈上下文保存为崩溃文件;根据所述崩溃文件,定位所述卡慢现象的发生原因。

进一步,处理器42根据所述崩溃文件,定位所述卡慢现象的发生原因,具体为:

提取所述崩溃文件具有的特征,将所述崩溃文件具有的特征在已标记特征中进行匹配,获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

在一可选实施方式中,通信组件43,还用于在处理器42的控制下,将所述崩溃文件发送给服务器,以供所述服务器定位所述卡慢现象的发生原因,并接收服务器发送的卡慢异常定位信息,所述异常定位信息包括服务器定位到的卡慢现象的发生原因。

在一可选实施方式中,通信组件43,还用于接收服务器发送的卡慢异常定位决策信息。所述卡慢异常定位决策信息包括但不限于:卡慢监控策略(包括监控的启停、监控频率、卡慢条件等),以及崩溃文件的上传策略等。

进一步,如图4所示,电子设备还包括:电源组件44、音频组件45、显示器46等其它组件。图4中仅示意性给出部分组件,并不意味着电子设备只包括图4所示组件。

电源组件44,为电子设备的各种组件提供电力。电源组件44可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件45被配置为输出和/或输入音频信号。例如,音频组件45包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器41或经由通信组件43发送。在一些实施例中,音频组件45还包括一个扬声器,用于输出音频信号。

显示器46包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

基于以上描述的卡慢异常定位装置的内部功能和结构,如图5所示,实际中,该卡慢异常定位装置可实现为另一电子设备,包括:存储器51和处理器52。

存储器51,用于存储卡慢异常定位程序。

除上述卡慢异常定位程序之外,程序存储空间还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器51可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

处理器52,耦合至存储器51,用于执行所述卡慢异常定位程序,以用于:

根据待处理应用程序中界面线程的运行状态,确定发生卡慢现象;

抓取所述卡慢现象发生时所述待处理应用程序的堆栈上下文;

根据所述堆栈上下文,定位所述卡慢现象的发生原因。

在本实施例中,卡慢异常定位程序独立于待处理应用程序实现。

可选的,存储器51还可用于存储待处理应用程序。相应地,处理器52还可用于执行所述待处理应用程序,以实现待处理应用程序的业务逻辑。

在一可选实施方式中,处理器52根据所述待处理应用程序中界面线程的运行状态,确定发生卡慢现象,具体为:

监控所述界面线程的响应状态;

根据所述界面线程的响应状态,确定发生所述卡慢现象。

可选的,如图5所示,电子设备还包括:通信组件53。

通信组件53被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件53经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件53还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

基于通信组件53,处理器52监控所述界面线程的响应状态,具体为:

通过通信组件53向所述界面线程的窗口发送带有超时参数的消息;以及监控通信组件53在所述超时参数指定的时间内是否接收到所述消息的返回结果,若监控到通信组件53未能在所述超时参数指定的时间内接收到所述消息的返回结果,确定界面线程响应超时。

通信组件53,耦合至处理器52,用于向界面线程的窗口发送所述消息,并等待接收所述消息的返回结果。

进一步可选的,通信组件53向所述界面线程的窗口发送消息,具体为:根据监控频率,周期性地向所述窗口句柄发送所述消息。

在一可选实施方式中,处理器52定位所述卡慢现象的发生原因,具体为:

若所述界面线程响应超时,确定发生所述卡慢现象;或者

若所述界面线程响应超时的次数大于次数阈值,确定发生所述卡慢现象;或者

若所述界面线程连续两次响应超时之间的时间间隔小于间隔阈值,确定发生所述卡慢现象。

在一可选实施方式中,处理器52定位所述卡慢现象的发生原因,具体为:将所述堆栈上下文保存为崩溃文件;根据所述崩溃文件,定位所述卡慢现象的发生原因。

进一步,处理器52根据所述崩溃文件,定位所述卡慢现象的发生原因,具体为:

提取所述崩溃文件具有的特征,将所述崩溃文件具有的特征在已标记特征中进行匹配,获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

在一可选实施方式中,通信组件53,还用于在处理器52的控制下,将所述崩溃文件发送给服务器,以供所述服务器定位所述卡慢现象的发生原因,并接收服务器发送的卡慢异常定位信息,所述异常定位信息包括服务器定位到的卡慢现象的发生原因。

在一可选实施方式中,通信组件53,还用于接收服务器发送的卡慢异常定位决策信息。所述卡慢异常定位决策信息包括但不限于:卡慢监控策略(包括监控的启停、监控频率、卡慢条件等),以及崩溃文件的上传策略等。

进一步,如图5所示,电子设备还包括:电源组件54、音频组件55、显示器56等其它组件。图5中仅示意性给出部分组件,并不意味着电子设备只包括图5所示组件。

电源组件54,为电子设备的各种组件提供电力。电源组件54可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件55被配置为输出和/或输入音频信号。例如,音频组件55包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器51或经由通信组件53发送。在一些实施例中,音频组件55还包括一个扬声器,用于输出音频信号。

显示器56包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

图6为本申请又一实施例提供的服务器的结构示意图。如图6所示,该服务器包括:存储器61、处理器62和通信组件63。

存储器61,用于存储程序。

通信组件63,用于接收客户端发送的崩溃文件,所述崩溃文件是所述客户端根据待处理应用程序发生卡慢现象时的堆栈上下文生成的。

处理器62,耦合至所述存储器61和所述通信组件63,用于执行所述程序,以用于:

提取所述崩溃文件具有的特征;

将所述崩溃文件具有的特征在已标记特征中进行匹配;

获取被所述崩溃文件匹配中的已标记特征所对应的卡慢原因,作为所述卡慢现象的发生原因。

进一步,通信组件63还用于,向所述客户端发送卡慢异常定位信息,所述异常定位信息包括所述卡慢现象的发生原因。

进一步,通信组件63还用于,向客户端发送卡慢异常定位决策信息,所述卡慢异常定位决策信息包括但不限于:卡慢监控策略(包括控制监控过程的启停、监控频率、卡慢条件等),以及崩溃文件的上传策略等。这样客户端可以根据卡慢监控策略监控卡慢现象是否发生,并按照上传策略将崩溃文件上传至服务器,以便于服务器分析卡慢现象的发生原因。

进一步,如图6所示,服务器还包括:电源组件64、音频组件65、显示器66等其它组件。图6中仅示意性给出部分组件,并不意味着电子设备只包括图6所示组件。

电源组件64,为电子设备的各种组件提供电力。电源组件64可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件65被配置为输出和/或输入音频信号。例如,音频组件65包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器61或经由通信组件63发送。在一些实施例中,音频组件65还包括一个扬声器,用于输出音频信号。

显示器66包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1