CN108062257A - 一种处理堆栈信息的方法及系统 - Google Patents

一种处理堆栈信息的方法及系统 Download PDF

Info

Publication number
CN108062257A
CN108062257A CN201711466204.4A CN201711466204A CN108062257A CN 108062257 A CN108062257 A CN 108062257A CN 201711466204 A CN201711466204 A CN 201711466204A CN 108062257 A CN108062257 A CN 108062257A
Authority
CN
China
Prior art keywords
anr
stack
informations
application program
stack informations
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.)
Pending
Application number
CN201711466204.4A
Other languages
English (en)
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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology 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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201711466204.4A priority Critical patent/CN108062257A/zh
Publication of CN108062257A publication Critical patent/CN108062257A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种处理堆栈信息的方法及系统,首先获得M个anr第一程序不响应堆栈信息;然后从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;并将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器接收所述各应用程序对应的第二anr堆栈信息;然后解析所述各应用程序对应的第二anr堆栈信息,获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。

Description

一种处理堆栈信息的方法及系统
技术领域
本发明涉及通信技术领域,尤其涉及一种处理堆栈信息的方法及系统。
背景技术
通常情况下,由于目前用户的多样化需求,移动终端上安装了各种应用软件。当应用软件启动,系统会创建一个主线程。该主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,启动的应用软件和Android的UI组件发生交互。所以主线程也可以认为是UI线程。
而系统不会为每个组件单独创建线程,在同一个进程里的UI组件都会在UI线程里实例化,系统对每一个组件的调用都从UI线程分发出去。结果就是,响应系统回调的方法(比如响应用户动作和各种生命周期回调)永远都是在UI线程里运行,如果所有的工作都在UI线程,做一些比较耗时的工作比如访问网络或者数据库查询,都会阻塞UI线程,导致事件停止分发,对于用户来说,应用看起来像是卡住了。如果UI线程阻塞的时间太长(大约超过5秒),用户就会看到anr(application not responding)的对话框。例如,主线程执行超过5s会发生anr;广播执行超过10s会发生anr;Service执行超过20s会发生anr。
当出现anr时会对应出现anr堆栈信息。而目前对于anr堆栈信息的处理是仅仅在系统中进行记录而并不做其他处理,导致当出现anr故障时无法获知故障出现的具体原因。
发明内容
鉴于上述问题,提出了本发明以便提供一种处理堆栈信息的方法及系统。
本发明的一个方面,提供了一种处理堆栈信息的方法,包括:
获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
优选的,所述获得M个anr第一程序不响应堆栈信息,具体包括:
每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息。
优选的,所述从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息,具体包括:
解析所述M个第一anr堆栈信息得到各自的进程名;
将所述M个第一anr堆栈信息中各自的进程名和目标应用程序包含的所有进程名进行一一匹配;
若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述目标应用程序中的进程名一致,则将所述当前anr堆栈信息确定为所述目标应用程序对应的第二anr堆栈信息。
优选的,所述将所述目标应用程序对应的第二anr堆栈信息发送给服务器,具体包括:
将所述目标应用程序对应的第二anr堆栈信息进行存储;
当所述目标应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述目标应用程序对应的第二anr堆栈信息发送给所述服务器。
本发明公开了一种移动终端,包括:
获得模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定模块,用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
发送模块,用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
优选的,所述获得模块,具体用于每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息。
优选的,所述确定模块,具体包括:
解析模块,用于解析所述M个第一anr堆栈信息得到各自的进程名;
匹配模块,用于将所述M个第一anr堆栈信息中各自的进程名和目标应用程序包含的所有进程名进行一一匹配;
确定子模块,用于若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述目标应用程序中的进程名一致,则将所述当前anr堆栈信息确定为所述目标应用程序对应的第二anr堆栈信息。
优选的,所述发送模块,具体包括:
存储模块,用于将所述目标应用程序对应的第二anr堆栈信息进行存储;
发送子模块,用于当所述目标应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述目标应用程序对应的第二anr堆栈信息发送给所述服务器。
本发明公开了一种处理堆栈信息的方法,包括:
接收所述目标应用程序对应的第二anr堆栈信息;
解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
优选的,所述接收所述目标应用程序对应的第二anr堆栈信息之后,所述方法还包括:
确定在预设时间范围内接收到的包含所述目标应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述第二anr堆栈信息的对应的哈希值出现的次数;
按照哈希值出现的次数将所述目标应用程序对应的第二anr堆栈信息进行排序;
按照排序的顺序解析所述目标应用程序对应的第二anr堆栈信息。
本发明公开了一种服务器,包括:
接收单元,用于接收所述目标应用程序对应的第二anr堆栈信息;
解析单元,用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
将匹配单元,用于所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
优选的,所述服务器还包括:
第一确定单元,用于接收所述目标应用程序对应的第二anr堆栈信息之后,确定在预设时间范围内接收到的包含所述目标应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
第二确定单元,用于对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
第三确定单元,用于基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述第二anr堆栈信息的对应的哈希值出现的次数;
排序单元,用于按照哈希值出现的次数将所述目标应用程序对应的第二anr堆栈信息进行排序;
所述解析单元,还用于按照排序的顺序解析所述目标应用程序对应的第二anr堆栈信息。
本发明公开了一种处理堆栈信息的系统,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;还用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器;
所述服务器,用于接收所述目标应用程序对应的第二anr堆栈信息;还用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;还用于将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
本发明公开了一种处理堆栈信息的方法,包括:
获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
优选的,所述获得M个anr第一程序不响应堆栈信息之前,所述方法还包括:
实时监控所述智能终端中各应用程序的运行,当各应用程序对应的一个或多个进程出现故障,则收集各应用程序中正在运行的各进程的所有线程对应的anr堆栈信息,并存储在anr文件目录中。
优选的,所述获得M个anr第一程序不响应堆栈信息,具体包括:
每隔预设时间范围从所述anr文件目录中拷贝获得所述M个第一anr堆栈信息。
优选的,所述从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息,具体包括:
解析所述M个第一anr堆栈信息得到各自的进程名;
将所述M个第一anr堆栈信息中各自的进程名和各应用程序包含的所有进程名进行一一匹配;
若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述各应用程序中当前应用程序的进程名一致,则将所述当前anr堆栈信息确定为所述当前应用程序对应的第二anr堆栈信息,进而确定出各应用程序对应的第二anr堆栈信息。
优选的,所述将所述各应用程序对应的第二anr堆栈信息发送给服务器,具体包括:
将所述各应用程序对应的第二anr堆栈信息进行存储;
当所述各应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述各应用程序对应的第二anr堆栈信息发送给所述服务器。
本发明公开了一种移动终端,包括:
获得anr堆栈信息模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定anr堆栈信息模块,用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
发送anr堆栈信息模块,用于将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
本发明公开了一种处理堆栈信息的方法,包括:
接收所述各应用程序对应的第二anr堆栈信息;
解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
优选的,所述接收所述各应用程序对应的第二anr堆栈信息之后,所述方法还包括:
确定在预设时间范围内接收到的包含所述各应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述各应用程序对应的第二anr堆栈信息的对应的哈希值出现的次数;
按照哈希值出现的次数将所述各应用程序对应的第二anr堆栈信息进行排序。
优选的,所述按照哈希值出现的次数所述各应用程序对应的第二anr堆栈信息进行排序之前,所述方法还包括:
按照应用程序对各应用程序对应的第二anr堆栈信息预先进行划分。
本发明公开了一种服务器,包括:
接收anr堆栈信息单元,用于接收所述各应用程序对应的第二anr堆栈信息;
解析anr堆栈信息单元,用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
匹配anr堆栈信息单元,用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
本发明公开了一种处理堆栈信息的系统,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;还用于将所述各应用程序对应的第二anr堆栈信息发送给服务器;
服务器,用于接收所述各应用程序对应的第二anr堆栈信息;还用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;还用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本发明公开了一种处理堆栈信息的方法及系统,首先获得M个anr第一程序不响应堆栈信息;然后从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;并将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器接收所述各应用程序对应的第二anr堆栈信息;然后解析所述各应用程序对应的第二anr堆栈信息,获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。由此可见,本发明先在移动终端侧处理并确定出各应用程序对应的第二anr堆栈信息,然后传给服务器,再由服务器基于各应用程序对应的第二anr堆栈信息确定出对应的功能模块,由于第二anr堆栈信息是anr出现时生成的堆栈信息,故而其对应的功能模块就是出现anr的故障功能模块,由此则可以确定出出现anr故障时具体的故障位置。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种处理堆栈信息的方法的实施过程图;
图2示出了根据本发明一个实施例的一种移动终端的结构图;
图3示出了根据本发明一个实施例的一种处理堆栈信息的方法的另一个实施过程图;
图4示出了根据本发明一个实施例的一种服务器的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明实施例中,一个应用软件在运行的过程中可以生成一个或者多个进程,而每个进程又开启了一个或者多个线程来执行该应用软件运行时对应的功能。这些线程可以是主线程也可以是由主线程调控的子线程。
应用软件在运行时的各个功能可以看做是功能模块,由此,可以将应用软件看做是由大量功能模块组成。而每个功能模块的启动则相当于生成一个线程,因此每个功能模块都对应有一个线程,并具有线程名称。
本发明实施例的主要目的,则是在生成堆栈信息之后,先在移动终端侧处理并确定出各应用程序对应的第二anr堆栈信息,然后传给服务器,再由服务器基于各应用程序对应的第二anr堆栈信息确定出对应的功能模块,进而确定得到出现anr故障时具体的故障位置。
在具体的实施过程中,参看图1,本发明公开了一种处理堆栈信息的方法,包括:
步骤11,获得M个第一anr程序不响应堆栈信息。其中,M为正整数。
在具体的实施过程中,各应用程序在运行时都会生成对应的一个或者多个进程,而移动终端侧的系统会实时监测各应用程序对应的进程,如果系统监测到了各应用程序对应的一个或多个进程出现故障,例如进程的长时间对事件无响应或者执行耗时过长。则会生成anr堆栈信息。anr堆栈信息用来表示线程故障的位置,例如,收集anr堆栈信息的是为了确定出主线程、广播、service这些代码里出现执行超时,影响用户体验的具体位置。由于进程无响应,并不代表是那个进程的问题,有可能是其他进程的资源占有率高等等,故而会将当前所有运行的进程的所有线程的堆栈信息打印出来,输出到anr文件目录中。具体来说,anr文件目录,是移动终端设置的一个文件目录,例如/data/anr目录,用来存储所有anr堆栈信息的文件目录。不管是哪个应用程序的anr堆栈信息,只要生成anr堆栈信息则会将其写入anr文件目录中。
故而,在获得M个第一anr程序不响应堆栈信息的具体实施过程中,会每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息,也就是说,会定期扫描anr文件目录,调用该时间段中生成的anr堆栈信息。为了便于区分,将从anr文件目录中拷贝获得还未经过处理的anr堆栈信息称为第一anr堆栈信息,将从第一anr堆栈信息筛选出的anr堆栈信息称为第二anr堆栈信息。
进一步的,从anr文件目录拷贝出的第一anr信息可能只有一个也可能有批量(多个)的情况,不管数目多少,本发明在处理第一anr信息的过程是一样的。如果是多个的情况,则会一一对第一anr信息进行处理。
下面介绍对第一anr信息具体的处理情况。
步骤12,从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息。
具体来说,anr堆栈信息中包含有四部分内容:哈希值,发生anr的进程名,发生anr的线程名,具体内容。一个anr堆栈对应一个哈希值。本发明实施例可以利用哈希值出现的次数统计出该anr堆栈信息出现的次数。例如10个anr堆栈信息有8个anr堆栈信息的哈希值一样,那么就表示该anr堆栈信息出现了8次,anr堆栈信息出现的次数越多表示故障越严重。发生anr的进程名用来和应用程序的进程名进行对比,如果一致则表示该anr堆栈信息属于该应用程序。由此,可以将anr堆栈信息进行归类,将属于各应用程序的anr堆栈信息确定出来。例如本发明实施例中,可以将属于目标应用程序的anr堆栈信息确定出来,排除不属于目标应用程序的其他anr堆栈信息。发生anr的线程名用来确定出具体的故障位置,后续会进行详细的介绍。
故而,在具体的实施过程中,从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息,具体包括:解析所述M个第一anr堆栈信息得到各自的进程名;将所述M个第一anr堆栈信息中各自的进程名和目标应用程序包含的所有进程名进行一一匹配;若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述目标应用程序中的进程名一致,则将所述当前anr堆栈信息确定为所述目标应用程序对应的第二anr堆栈信息。由此,则可以从M个第一anr堆栈信息中筛选出目标应用程序对应的第二anr堆栈信息。
在本发明实施例中,可以有目标应用程序本身来对M个第一anr堆栈信息进行解析,从而确定出属于本身的第二anr堆栈信息。当然,也可以由移动终端来对M个第一anr堆栈信息进行解析,从而确定出属于目标应用程序的第二anr堆栈信息。
进一步的,会逐个对M个第一anr堆栈信息进行解析。下面介绍对单个第一anr堆栈信息进行解析的具体解析逻辑。
由于每个anr堆栈信息是有起始行和结束行的,故而本发明实施例采用正则的方式来匹配第一anr堆栈信息,
设定匹配的正则表达式规则如下:
第一行:(-{5}\\spid\\s\\d+\\sat\\s\\d+-\\d+-\\d+\\s\\d{2}:\\d{2}:\\d{2}\\s-{5}")
进程名:("Cmd\\sline:\\s(\\S+)")
结束行:("-{5}\\send\\s\\d+\\s-{5}");
线程:("\".+\"\\s(daemon\\s){0,1}prio=\\d+\\stid=\\d+\\s.*")
则在解析第一anr堆栈信息的过程中,按行解析第一anr堆栈信息:
a、如果匹配到第一行,则说明找到了一个线程堆栈,继续解析;
b、如果匹配到了进程名行,并且该进程名就是目标应用程序的进程,则继续解析;
c、如果匹配到了结束行,则说明一个完整的线程堆栈匹配完成,继续解析下一个线程堆栈。由此解析出同一个进程的所有线程的第一anr堆栈信息,因为anr文件目录里是有多个anr堆栈信息,不止是目标应用程序的anr堆栈信息,其他应用程序的anr堆栈信息也会放入anr文件目录里,故而此处的目的就是从获得的所有第一anr堆栈信息确定出目标应用程序对应的第二anr堆栈信息。
当确定出目标应用程序对应的第二anr堆栈信息之后,则会执行下面的步骤。
步骤13,将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
在具体的实施过程中,在得到目标应用程序对应的第二anr堆栈信息之后,可以实时发送给对应的服务器进行解析。而作为一种可选的实施例,在将所述目标应用程序对应的第二anr堆栈信息发送给服务器的过程中,将所述目标应用程序对应的第二anr堆栈信息进行存储;当所述目标应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述目标应用程序对应的第二anr堆栈信息发送给所述服务器。例如,存储到5条目标应用程序对应的第二anr堆栈信息,则会将这5条目标应用程序对应的第二anr堆栈信息的发送给目标应用程序对应的服务器。
基于同一发明构思,下面的实施例则介绍移动终端侧的具体结构。
参看图2,本发明实施例公开了一种移动终端,包括:
获得模块21,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定模块22,用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
发送模块23,用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
作为一种可选的实施方式,所述获得模块21,具体用于每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息。
作为一种可选的实施方式,所述确定模块22,具体包括:
解析模块,用于解析所述M个第一anr堆栈信息得到各自的进程名;
匹配模块,用于将所述M个第一anr堆栈信息中各自的进程名和目标应用程序包含的所有进程名进行一一匹配;
确定子模块,用于若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述目标应用程序中的进程名一致,则将所述当前anr堆栈信息确定为所述目标应用程序对应的第二anr堆栈信息。
作为一种可选的实施方式,所述发送模块23,具体包括:
存储模块,用于将所述目标应用程序对应的第二anr堆栈信息进行存储;
发送子模块,用于当所述目标应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述目标应用程序对应的第二anr堆栈信息发送给所述服务器。
以上便是在移动终端侧所做的处理,下面的实施例介绍目标应用程序所对应的服务器侧的具体实施过程。
参看图3,在本发明实施例中,公开了一种处理堆栈信息的方法,包括:
步骤31,接收所述目标应用程序对应的第二anr堆栈信息。
在具体的实施过程中,服务器在接收由移动终端传输的anr堆栈信息时,可逐个接收anr堆栈信息,也可以批量接收anr堆栈信息。
如果批量接收,则在接收所述目标应用程序对应的第二anr堆栈信息之后,会确定在预设时间范围内接收到的包含所述目标应用程序对应的第二anr堆栈信息的多个anr堆栈信息,这多个anr堆栈信息实际上也是目标应用程序对应的多个第二anr堆栈信息,只是为了和单个目标应用程序对应的第二anr堆栈信息进行区分,本实施例在此处省略了,只统称为多个anr堆栈信息,这多个堆栈信息中包含有第二anr堆栈信息。批量接收到多个anr堆栈信息之后,会对这多个anr堆栈信息进行排序,然后按照排列的顺序来处理多个anr堆栈信息。这样做的原因是,如果同一个anr堆栈信息出现了多次,那么则表示该anr堆栈信息对应的故障特别严重,则优先处理该anr堆栈信息以获得对应的故障位置,以便尽早修复。
进一步的,由于本发明实施例可以利用哈希值出现的次数统计出该anr堆栈信息出现的次数。例如10个anr堆栈信息有8个anr堆栈信息的哈希值一样,那么就表示该anr堆栈信息出现了8次,anr堆栈信息出现的次数越多表示故障越严重。故而会对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;然后基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述第二anr堆栈信息的对应的哈希值出现的次数。然后按照哈希值出现的次数将所述目标应用程序对应的第二anr堆栈信息进行排序。假设10个anr堆栈信息中有8个anr堆栈信息的哈希值一样,这8个anr堆栈信息都是第二anr堆栈信息,故而第二anr堆栈信息出现的哈希值的次数是8次,表示第二anr堆栈信息(假设为堆栈信息A)出现了8次。然后另外两个anr堆栈信息(假设为堆栈信息B和堆栈信息C)每个出现1次。那么按照排序,则是堆栈信息A-堆栈信息B-堆栈信息C(后两个排序由于次数一样可以互换),该排序是处理顺序,那么就会按照排序的顺序解析所述目标应用程序对应的第二anr堆栈信息,例如优先解析堆栈信息A,再解析堆栈信息B,再解析堆栈信息C。
而在解析的具体过程则看下面的步骤。
步骤32,解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程。
步骤33,将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
在具体的实施过程中,由于应用软件在运行时的各个功能可以看做是功能模块,由此,可以将应用软件看做是由大量功能模块组成。而每个功能模块的启动则相当于生成一个线程,因此每个功能模块都对应有一个线程,并具有线程名称。在目标应用程序的服务器中会预先存储将每个功能模块对应的线程及其名称,故而匹配的过程中,只需要将第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,则可以知道是哪个功能模块的线程,确定出该第二anr堆栈信息的对应功能模块,则确定出了出现anr故障时具体的故障位置。
基于统一发明构思,参看图4,本发明实施例还公开了一种服务器,包括:
接收单元41,用于接收所述目标应用程序对应的第二anr堆栈信息;
解析单元42,用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
匹配单元43,用于所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
作为一种可选的实施例,所述服务器还包括:
第一确定单元,用于接收所述目标应用程序对应的第二anr堆栈信息之后,确定在预设时间范围内接收到的包含所述目标应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
第二确定单元,用于对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
第三确定单元,用于基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述第二anr堆栈信息的对应的哈希值出现的次数;
排序单元,用于按照哈希值出现的次数将所述目标应用程序对应的第二anr堆栈信息进行排序;
所述解析单元42,还用于按照排序的顺序解析所述目标应用程序对应的第二anr堆栈信息。
以上便是终端设备和目标应用程序的服务器各自处理该目标应用程序的第二anr堆栈信息的实施过程。而基于同一发明构思,下面的实施例从系统整体介绍移动终端和服务器的交互过程。
在具体的实施过程中,公开了一种处理堆栈信息的系统,该系统包括移动终端和服务器。该服务器是目标应用程序对应的服务器。
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;还用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器;
所述服务器,用于接收所述目标应用程序对应的第二anr堆栈信息;还用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;还用于将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
以上便是终端设备和目标应用程序的服务器处理该目标应用程序的第二anr堆栈信息的全部实施过程。
而在下面的实施例中,本发明还提供了一种处理堆栈信息的方法,该方法应用在移动终端侧,本发明实施例提供了一套监控程序,主要目的是用来实施该处理堆栈信息的方法,故而该处理堆栈信息的具体实施过程都是由移动终端侧提供的。
在具体的实施过程中,该方法包括:
第1步,获得M个第一anr程序不响应堆栈信息;其中,M为正整数。
在具体的实施过程中,各应用程序在运行时都会生成对应的一个或者多个进程,而移动终端侧的监控程序会实时监测各应用程序对应的进程,如果监测到了各应用程序对应的一个或多个进程出现故障,例如进程的长时间对事件无响应或者执行耗时过长。则会生成anr堆栈信息。anr堆栈信息用来表示线程故障的位置,例如,收集anr堆栈信息的是为了确定出主线程、广播、service这些代码里出现执行超时,影响用户体验的具体位置。由于进程无响应,并不代表是那个进程的问题,有可能是其他进程的资源占有率高等等,故而会将当前所有运行的进程的所有线程的堆栈信息打印出来,输出到anr文件目录中。不管是哪个应用程序的anr堆栈信息,只要生成anr堆栈信息则会将其写入anr文件目录中。
本发明实施例中的anr堆栈信息的具体内容和目标应用程序对应的实施例中的anr堆栈信息的内容一致,故而不再赘述。
故而,在获得M个第一anr程序不响应堆栈信息的具体实施过程中,会每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息,也就是说,会定期扫描anr文件目录,调用该时间段中生成的anr堆栈信息。为了便于区分,将从anr文件目录中拷贝获得还未经过处理的anr堆栈信息称为第一anr堆栈信息,将从第一anr堆栈信息筛选出的anr堆栈信息称为第二anr堆栈信息。
进一步的,从anr文件目录拷贝出的第一anr信息可能只有一个也可能有批量(多个)的情况,不管数目多少,本发明在处理第一anr信息的过程是一样的。如果是多个的情况,则会一一对第一anr信息进行处理。
下面介绍对第一anr信息具体的处理情况。
第2步,从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息。
在具体的实施过程中,首先会解析所述M个第一anr堆栈信息得到各自的进程名;然后将所述M个第一anr堆栈信息中各自的进程名和各应用程序包含的所有进程名进行一一匹配;若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述各应用程序中当前应用程序的进程名一致,则将所述当前anr堆栈信息确定为所述当前应用程序对应的第二anr堆栈信息,进而确定出各应用程序对应的第二anr堆栈信息。由于本发明移动终端侧能够获知所有安装在其中的应用程序的进程名,故而在得到M个第一anr堆栈信息之后,可以将M个第一anr堆栈信息和所有应用程序中的进程名进行匹配,进而确定出具体是哪个应用程序的堆栈信息。而在具体的匹配过程中,和上述实施例中目标应用程序的匹配过程类似,故而不再赘述。
在匹配之后,可以将各应用程序对应的第二anr堆栈信息发送给服务器。
第3步,将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
作为一种可选的实施例,在发送的过程中,可以将所述各应用程序对应的第二anr堆栈信息进行存储;当所述各应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述各应用程序对应的第二anr堆栈信息发送给所述服务器。例如,对于每个应用程序来说,存储到5条各应用程序对应的第二anr堆栈信息,则会将这5条第二anr堆栈信息的发送给服务器。
进一步的,此处的服务器并不是只各应用程序各自的服务器,而是一种总服务器。该服务器预先存储有所有应用程序各自对应的线程名。故而在接收到各各应用程序对应的第二anr堆栈信息之后,能够据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
上述实施方式,由移动终端侧统一监控并处理anr堆栈信息,能够减轻各应用程序的负担,避免各应用程序在处理anr堆栈信息时出现卡顿现象,影响用户的体验。另外,打通了单个应用程序无法处理其他应用程序的anr堆栈信息的瓶颈,本发明能够将获得的anr堆栈信息和所有的应用程序的进程进行对比,及时快速的归类出具体属于哪个应用程序。
基于同一发明构思,下面的实施例介绍了一种移动终端。
在本发明实施例中,公开了一种移动终端,包括:
获得anr堆栈信息模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定anr堆栈信息模块,用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
发送anr堆栈信息模块,用于将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
基于同一发明构思,下面的实施例在服务器侧介绍一种处理堆栈信息的方法,本发明实施例中的服务器并不是只各应用程序各自的服务器,而是一种总服务器。该服务器预先存储有所有应用程序各自对应的进程名和线程名,也就是说,由于应用软件在运行时的各个功能可以看做是功能模块,由此,可以将应用软件看做是由大量功能模块组成。而每个功能模块的启动则相当于生成一个线程,因此每个功能模块都对应有一个线程,并具有线程名称。而在该服务器中,所有应用程序在运行时生成的进程名和线程名该服务器都有记录。故而在接收到各各应用程序对应的第二anr堆栈信息之后,能够据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
在具体的实施过程中,服务器的具体实施方式包括下述步骤:
第1步,接收所述各应用程序对应的第二anr堆栈信息。
在具体的实施过程中,服务器在接收由移动终端传输的anr堆栈信息时,可逐个接收anr堆栈信息,也可以批量接收anr堆栈信息。
在批量接收了anr堆栈信息之后,确定在预设时间范围内接收到的包含所述各应用程序对应的第二anr堆栈信息的多个anr堆栈信息;对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述各应用程序对应的第二anr堆栈信息的对应的哈希值出现的次数;按照哈希值出现的次数将所述各应用程序对应的第二anr堆栈信息进行排序。而在具体的处理过程中,也是按照应用程序先进行划分,也就是说按照应用程序对各应用程序对应的第二anr堆栈信息预先进行划分,然后再针对每个应用程序各自的第二anr堆栈信息进行排序,排序之后对其进行解析。例如QQ应用程序的第二anr堆栈信息就划分到QQ应用程序的类别下,微信应用程序的第二anr堆栈信息就划分到微信应用程序的类别下。而在单个应用程序中,对各自的第二anr堆栈信息进行排序的过程,在目标应用程序的服务器中具有详细的介绍,故而本发明不再赘述。
第2步,解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程。
第3步,将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
在具体的实施过程中,由于应用软件在运行时的各个功能可以看做是功能模块,由此,可以将应用软件看做是由大量功能模块组成。而每个功能模块的启动则相当于生成一个线程,因此每个功能模块都对应有一个线程,并具有线程名称。而在本发明实施例中的服务器中会预先存储每个应用程序对应的每个功能模块的线程及其名称,故而匹配的过程中,只需要将第二anr堆栈信息的主线程和所述各应用程序中的各功能模块所对应的线程进行匹配,则可以知道是哪个应用程序下的功能模块的线程,确定出该第二anr堆栈信息的对应的应用程序,并且进一步确定出该应用程序下的哪个功能模块,从而确定出了出现anr故障时各应用程序具体的故障位置。
作为一种可选的实施例,基于所述各应用程序对应的第二anr堆栈信息对应的功能模块生成各自的告知消息,并将各告知消息传输给各应用程序对应的服务器,使各应用程序对应的服务器基于各自的告知消息对故障进行修复处理。如此,将原本由各应用程序对应的服务器所做的工作转移给本发明实施例公开的服务器来做,能够减轻各应用程序的服务器的负担,节约其资源。
这样做的好处是,打通了单个应用程序无法处理其他应用程序的anr堆栈信息的瓶颈,本发明能够获取到所有的应用程序对应的线程或者进程,从而在出现anr堆栈信息时,能够及时快速将该anr堆栈信息和所有的应用程序进行匹配,进而及时快速的确定出具体的出故障的应用程序以及具体的故障位置。
基于统一发明构思,本发明实施例还公开了一种服务器,包括:
接收anr堆栈信息单元,用于接收所述各应用程序对应的第二anr堆栈信息;
解析anr堆栈信息单元,用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
匹配anr堆栈信息单元,用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
以上便是终端设备和服务器各自处理该各个应用程序的第二anr堆栈信息的实施过程。而基于同一发明构思,下面的实施例从系统整体介绍移动终端和服务器的交互过程。
基于统一发明构思,本发明实施例还公开了一种处理堆栈信息的系统,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;还用于将所述各应用程序对应的第二anr堆栈信息发送给服务器;
服务器,用于接收所述各应用程序对应的第二anr堆栈信息;还用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;还用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本发明公开了一种处理堆栈信息的方法及系统,首先获得M个anr第一程序不响应堆栈信息;然后从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;并将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器接收所述各应用程序对应的第二anr堆栈信息;然后解析所述各应用程序对应的第二anr堆栈信息,获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。由此可见,本发明先在移动终端侧处理并确定出各应用程序对应的第二anr堆栈信息,然后传给服务器,再由服务器基于各应用程序对应的第二anr堆栈信息确定出对应的功能模块,由于第二anr堆栈信息是anr出现时生成的堆栈信息,故而其对应的功能模块就是出现anr的故障功能模块,由此则可以确定出出现anr故障时具体的故障位置。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种处理堆栈信息的方法,其特征在于,包括:
获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
A2、如A1所述的方法,其特征在于,所述获得M个anr第一程序不响应堆栈信息,具体包括:
每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息。
A3、如A1所述的方法,其特征在于,所述从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息,具体包括:
解析所述M个第一anr堆栈信息得到各自的进程名;
将所述M个第一anr堆栈信息中各自的进程名和目标应用程序包含的所有进程名进行一一匹配;
若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述目标应用程序中的进程名一致,则将所述当前anr堆栈信息确定为所述目标应用程序对应的第二anr堆栈信息。
A4、如A1所述的方法,其特征在于,所述将所述目标应用程序对应的第二anr堆栈信息发送给服务器,具体包括:
将所述目标应用程序对应的第二anr堆栈信息进行存储;
当所述目标应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述目标应用程序对应的第二anr堆栈信息发送给所述服务器。
B5、一种移动终端,其特征在于,包括:
获得模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定模块,用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
发送模块,用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
B6、如B5所述的移动终端,其特征在于,所述获得模块,具体用于每隔预设时间范围从anr文件目录中拷贝获得所述M个第一anr堆栈信息。
B7、如B5所述的移动终端,其特征在于,所述确定模块,具体包括:
解析模块,用于解析所述M个第一anr堆栈信息得到各自的进程名;
匹配模块,用于将所述M个第一anr堆栈信息中各自的进程名和目标应用程序包含的所有进程名进行一一匹配;
确定子模块,用于若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述目标应用程序中的进程名一致,则将所述当前anr堆栈信息确定为所述目标应用程序对应的第二anr堆栈信息。
B8、如B5所述的移动终端,其特征在于,所述发送模块,具体包括:
存储模块,用于将所述目标应用程序对应的第二anr堆栈信息进行存储;
发送子模块,用于当所述目标应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述目标应用程序对应的第二anr堆栈信息发送给所述服务器。
C9、一种处理堆栈信息的方法,其特征在于,包括:
接收所述目标应用程序对应的第二anr堆栈信息;
解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
C10、如C9所述的方法,其特征在于,所述接收所述目标应用程序对应的第二anr堆栈信息之后,所述方法还包括:
确定在预设时间范围内接收到的包含所述目标应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述第二anr堆栈信息的对应的哈希值出现的次数;
按照哈希值出现的次数将所述目标应用程序对应的第二anr堆栈信息进行排序;
按照排序的顺序解析所述目标应用程序对应的第二anr堆栈信息。
D11、一种服务器,其特征在于,包括:
接收单元,用于接收所述目标应用程序对应的第二anr堆栈信息;
解析单元,用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
将匹配单元,用于所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
D12、如D11所述的服务器,其特征在于,所述服务器还包括:
第一确定单元,用于接收所述目标应用程序对应的第二anr堆栈信息之后,确定在预设时间范围内接收到的包含所述目标应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
第二确定单元,用于对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
第三确定单元,用于基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述第二anr堆栈信息的对应的哈希值出现的次数;
排序单元,用于按照哈希值出现的次数将所述目标应用程序对应的第二anr堆栈信息进行排序;
所述解析单元,还用于按照排序的顺序解析所述目标应用程序对应的第二anr堆栈信息。
E13、一种处理堆栈信息的系统,其特征在于,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;还用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器;
所述服务器,用于接收所述目标应用程序对应的第二anr堆栈信息;还用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;还用于将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
F14、一种处理堆栈信息的方法,其特征在于,包括:
获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
F15、如F14所述的方法,其特征在于,所述获得M个anr第一程序不响应堆栈信息之前,所述方法还包括:
实时监控所述智能终端中各应用程序的运行,当各应用程序对应的一个或多个进程出现故障,则收集各应用程序中正在运行的各进程的所有线程对应的anr堆栈信息,并存储在anr文件目录中。
F16、如F15所述的方法,其特征在于,所述获得M个anr第一程序不响应堆栈信息,具体包括:
每隔预设时间范围从所述anr文件目录中拷贝获得所述M个第一anr堆栈信息。
F17、如F14所述的方法,其特征在于,所述从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息,具体包括:
解析所述M个第一anr堆栈信息得到各自的进程名;
将所述M个第一anr堆栈信息中各自的进程名和各应用程序包含的所有进程名进行一一匹配;
若所述M个第一anr堆栈信息中当前anr堆栈信息的进程名和所述各应用程序中当前应用程序的进程名一致,则将所述当前anr堆栈信息确定为所述当前应用程序对应的第二anr堆栈信息,进而确定出各应用程序对应的第二anr堆栈信息。
F18、如F14所述的方法,其特征在于,所述将所述各应用程序对应的第二anr堆栈信息发送给服务器,具体包括:
将所述各应用程序对应的第二anr堆栈信息进行存储;
当所述各应用程序对应的第二anr堆栈信息的存储数量达到预设数量之后,则将达到预设数量的所述各应用程序对应的第二anr堆栈信息发送给所述服务器。
G19、一种移动终端,其特征在于,包括:
获得anr堆栈信息模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定anr堆栈信息模块,用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
发送anr堆栈信息模块,用于将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
H20、一种处理堆栈信息的方法,其特征在于,包括:
接收所述各应用程序对应的第二anr堆栈信息;
解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
H21、如H20所述的方法,其特征在于,所述接收所述各应用程序对应的第二anr堆栈信息之后,所述方法还包括:
确定在预设时间范围内接收到的包含所述各应用程序对应的第二anr堆栈信息的多个anr堆栈信息;
对所述多个anr堆栈信息进行解析获得对应的哈希值,并确定出所述多个anr堆栈信息对应的哈希值出现的次数;
基于所述多个anr堆栈信息对应的哈希值出现的次数,确定出所述各应用程序对应的第二anr堆栈信息的对应的哈希值出现的次数;
按照哈希值出现的次数将所述各应用程序对应的第二anr堆栈信息进行排序。
H22、如H21所述的方法,其特征在于,所述按照哈希值出现的次数所述各应用程序对应的第二anr堆栈信息进行排序之前,所述方法还包括:
按照应用程序对各应用程序对应的第二anr堆栈信息预先进行划分。
I23、一种服务器,其特征在于,包括:
接收anr堆栈信息单元,用于接收所述各应用程序对应的第二anr堆栈信息;
解析anr堆栈信息单元,用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
匹配anr堆栈信息单元,用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
J24、一种处理堆栈信息的系统,其特征在于,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;还用于将所述各应用程序对应的第二anr堆栈信息发送给服务器;
服务器,用于接收所述各应用程序对应的第二anr堆栈信息;还用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;还用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。

Claims (10)

1.一种处理堆栈信息的方法,其特征在于,包括:
获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
2.一种移动终端,其特征在于,包括:
获得模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定模块,用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;
发送模块,用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述目标应用程序对应的第二anr堆栈信息的主线程;将所述目标应用程序对应的第二anr堆栈信息的主线程和目标应用程序中的各功能模块的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
3.一种处理堆栈信息的方法,其特征在于,包括:
接收所述目标应用程序对应的第二anr堆栈信息;
解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
4.一种服务器,其特征在于,包括:
接收单元,用于接收所述目标应用程序对应的第二anr堆栈信息;
解析单元,用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;
将匹配单元,用于所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
5.一种处理堆栈信息的系统,其特征在于,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出目标应用程序对应的第二anr堆栈信息;还用于将所述目标应用程序对应的第二anr堆栈信息发送给服务器;
所述服务器,用于接收所述目标应用程序对应的第二anr堆栈信息;还用于解析所述目标应用程序对应的第二anr堆栈信息,获得所述目标应用程序对应的第二anr堆栈信息的主线程;还用于将所述目标应用程序对应的第二anr堆栈信息的主线程和所述目标应用程序中的各功能模块所对应的线程进行匹配,确定出所述第二anr堆栈信息对应的功能模块。
6.一种处理堆栈信息的方法,其特征在于,包括:
获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
7.一种移动终端,其特征在于,包括:
获得anr堆栈信息模块,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;
确定anr堆栈信息模块,用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;
发送anr堆栈信息模块,用于将所述各应用程序对应的第二anr堆栈信息发送给服务器,使得所述服务器据此进行解析获得所述各应用程序对应的第二anr堆栈信息的主线程;将所述各应用程序对应的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
8.一种处理堆栈信息的方法,其特征在于,包括:
接收所述各应用程序对应的第二anr堆栈信息;
解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
9.一种服务器,其特征在于,包括:
接收anr堆栈信息单元,用于接收所述各应用程序对应的第二anr堆栈信息;
解析anr堆栈信息单元,用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;
匹配anr堆栈信息单元,用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
10.一种处理堆栈信息的系统,其特征在于,包括:
移动终端,用于获得M个第一anr程序不响应堆栈信息;其中,M为正整数;还用于从所述M个第一anr堆栈信息中确定出各应用程序对应的第二anr堆栈信息;还用于将所述各应用程序对应的第二anr堆栈信息发送给服务器;
服务器,用于接收所述各应用程序对应的第二anr堆栈信息;还用于解析所述各应用程序的第二anr堆栈信息,获得所述各应用程序的第二anr堆栈信息的主线程;还用于将所述各应用程序的第二anr堆栈信息的主线程和各应用程序中的各功能模块所对应的线程进行匹配,确定出所述各应用程序对应的第二anr堆栈信息对应的功能模块。
CN201711466204.4A 2017-12-28 2017-12-28 一种处理堆栈信息的方法及系统 Pending CN108062257A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711466204.4A CN108062257A (zh) 2017-12-28 2017-12-28 一种处理堆栈信息的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711466204.4A CN108062257A (zh) 2017-12-28 2017-12-28 一种处理堆栈信息的方法及系统

Publications (1)

Publication Number Publication Date
CN108062257A true CN108062257A (zh) 2018-05-22

Family

ID=62140750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711466204.4A Pending CN108062257A (zh) 2017-12-28 2017-12-28 一种处理堆栈信息的方法及系统

Country Status (1)

Country Link
CN (1) CN108062257A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100197238A1 (en) * 2007-10-23 2010-08-05 Qualcomm Incorporated Fielded Device Failure Tracking and Response
CN103634441A (zh) * 2012-08-24 2014-03-12 腾讯科技(深圳)有限公司 一种测试移动终端的方法及装置
CN103838663A (zh) * 2012-11-20 2014-06-04 腾讯科技(深圳)有限公司 一种应用程序的测试方法及装置
CN104992081A (zh) * 2015-06-24 2015-10-21 华中科技大学 一种Android应用程序第三方代码的安全增强方法
CN105204979A (zh) * 2015-07-28 2015-12-30 维沃移动通信有限公司 安卓日志的记录方法及移动终端
CN105446806A (zh) * 2014-09-28 2016-03-30 广州市动景计算机科技有限公司 一种应用程序无响应的处理方法及装置
CN106293629A (zh) * 2016-08-16 2017-01-04 北京小米移动软件有限公司 堆栈获取方法及装置
CN106681913A (zh) * 2016-12-08 2017-05-17 武汉斗鱼网络科技有限公司 一种应用卡顿定位系统及方法
CN106878093A (zh) * 2017-03-31 2017-06-20 努比亚技术有限公司 一种无响应日志解析方法及终端

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100197238A1 (en) * 2007-10-23 2010-08-05 Qualcomm Incorporated Fielded Device Failure Tracking and Response
CN103634441A (zh) * 2012-08-24 2014-03-12 腾讯科技(深圳)有限公司 一种测试移动终端的方法及装置
CN103838663A (zh) * 2012-11-20 2014-06-04 腾讯科技(深圳)有限公司 一种应用程序的测试方法及装置
CN105446806A (zh) * 2014-09-28 2016-03-30 广州市动景计算机科技有限公司 一种应用程序无响应的处理方法及装置
CN104992081A (zh) * 2015-06-24 2015-10-21 华中科技大学 一种Android应用程序第三方代码的安全增强方法
CN105204979A (zh) * 2015-07-28 2015-12-30 维沃移动通信有限公司 安卓日志的记录方法及移动终端
CN106293629A (zh) * 2016-08-16 2017-01-04 北京小米移动软件有限公司 堆栈获取方法及装置
CN106681913A (zh) * 2016-12-08 2017-05-17 武汉斗鱼网络科技有限公司 一种应用卡顿定位系统及方法
CN106878093A (zh) * 2017-03-31 2017-06-20 努比亚技术有限公司 一种无响应日志解析方法及终端

Similar Documents

Publication Publication Date Title
CN108600029B (zh) 一种配置文件更新方法、装置、终端设备及存储介质
CN104991854B (zh) 一种服务器资源的监控统计方法和系统
CN104915285A (zh) 一种容器进程监控方法、装置及系统
CN101778004B (zh) 用于执行基于门限值调度的设备管理的终端和方法
CN104820640A (zh) 一种网页测试方法和装置
CN105429813A (zh) docker的监控方法及客户端
CN105338063A (zh) 多个服务器共享用户会话的方法及装置
CN104991821A (zh) 批量处理监控任务的方法及装置
CN106557691A (zh) 监控应用中的第三方sdk方法、装置和加固安装包的装置
CN104916095B (zh) 一种多点监控报警方法和系统
CN105471968A (zh) 一种数据交换方法、系统以及数据平台服务器
CN107733710A (zh) 链路调用关系的构建方法、装置、计算机设备及存储介质
CN112115044A (zh) 电力信息通信设备自动化测试方法及系统
CN104468222A (zh) 上报日志信息的方法、装置及系统
CN111142929A (zh) 一种设备生产过程中的固件配置方法、装置、设备及介质
CN109905268A (zh) 网络运维的方法及装置
CN110083512A (zh) 集群监控的方法及装置
CN109299002A (zh) 测试报告的生成方法、计算机可读存储介质及终端设备
CN105893160B (zh) 一种多接口数据的调度方法
CN108062257A (zh) 一种处理堆栈信息的方法及系统
CN110445658B (zh) 一种报文处理方法及系统
CN109302336B (zh) 邮件生成方法、装置、计算机设备及存储介质
CN113590178B (zh) Api实例的管理方法、装置、存储介质及电子设备
CN102810065A (zh) 用于加载程序模块的方法和系统
CN110019008A (zh) 一种数据存储方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20180522

RJ01 Rejection of invention patent application after publication