CN108647106B - 应用异常处理方法、存储介质及计算机设备 - Google Patents

应用异常处理方法、存储介质及计算机设备 Download PDF

Info

Publication number
CN108647106B
CN108647106B CN201810448842.1A CN201810448842A CN108647106B CN 108647106 B CN108647106 B CN 108647106B CN 201810448842 A CN201810448842 A CN 201810448842A CN 108647106 B CN108647106 B CN 108647106B
Authority
CN
China
Prior art keywords
application
exception
common
abnormal
information
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
CN201810448842.1A
Other languages
English (en)
Other versions
CN108647106A (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.)
Shenzhen Tencent Network Information Technology Co Ltd
Original Assignee
Shenzhen Tencent Network Information 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 Shenzhen Tencent Network Information Technology Co Ltd filed Critical Shenzhen Tencent Network Information Technology Co Ltd
Priority to CN201810448842.1A priority Critical patent/CN108647106B/zh
Publication of CN108647106A publication Critical patent/CN108647106A/zh
Application granted granted Critical
Publication of CN108647106B publication Critical patent/CN108647106B/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/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/073Error 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 memory management context, e.g. virtual memory or cache management
    • 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/0766Error or fault reporting or storing

Abstract

一种应用异常处理方法,包括步骤:获取发生第一应用异常时上传的第一应用异常信息,所述第一应用异常信息包括:发生所述第一应用异常时捕获的第一异常堆栈信息;解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块的第一模块类型特征;根据所述第一模块类型特征,确定所述第一应用异常的第一异常类型。上述应用异常处理方法,通过解析应用异常发生时上传的堆栈信息,确定该应用异常发生的模块,并按照应用异常发生的模块对应用异常进行分类,通过这种分类方法对堆栈信息进行分类,可以解决应用异常的定位问题,从而可以有效减少解决应用异常所花费的时间。

Description

应用异常处理方法、存储介质及计算机设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用异常处理方法、计算机可读存储介质、计算机设备。
背景技术
移动端应用软件的异常将影响整个软件的使用体验,为快速定位解决这些应用异常问题,一般都会捕获应用异常堆栈信息,通过应用异常堆栈信息,可以定位到一些异常的调用函数。
现有技术中在异常发生时,捕获程序异常发生时的内存堆栈、机型、系统等相关信息,上传到服务器,通过服务器识别同一个项目上报的相同问题,以便对异常进行统计和分析、计算应用异常率、主要应用异常问题等,以促进新项目程序定位异常问题,达到优化程序的目的;但是使用这样的方法仍有部分组件的应用异常难以定位。
发明内容
基于此,有必要针对现有技术中部分组件的应用异常难以定位的问题,提供一种应用异常处理方法、存储介质及计算机设备。
一种应用异常处理方法,包括:
获取发生第一应用异常时上传的第一应用异常信息,所述第一应用异常信息包括:发生所述第一应用异常时捕获的第一异常堆栈信息;
解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块的第一模块类型特征;
根据所述第一模块类型特征,确定所述第一应用异常的第一异常类型。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述应用异常处理方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述应用异常处理方法的步骤。
上述应用异常处理方法、存储介质及计算机设备,通过获取发生第一应用异常时上传第一异常堆栈信息,对第一异常堆栈信息解析后确定发生第一应用异常的第一应用模块的第一模块类型特征,根据第一模块类型特征将第一应用异常确定第一异常类型。其通过解析应用异常发生时上传的堆栈信息,获得该应用异常发生的模块,并按照应用异常发生的模块的模块类型特征,确定应用异常的异常类型,由于模块的多样性,从而增加了应用异常分类的维度,据此对应用异常进行分类,可以解决应用异常的定位问题,从而有效减少解决应用异常所花费的时间。
附图说明
图1为一个实施例中应用异常处理方法的应用环境图;
图2为一个实施例中应用异常处理方法的流程示意图;
图3为一个实施例中应用异常处理方法的流程示意图;
图4为一个实施例中建立共性异常案例库的流程示意图;
图5为一个实施例中建立共性异常案例库的流程示意图;
图6为一个实施例中应用异常处理方法的流程示意图;
图7为一个实施例中应用异常处理方法的流程示意图;
图8为一个具体实施例中建立共性异常案例库的流程示意图;
图9为一个具体实施例中为应用异常推荐解决方案的流程示意图;
图10为一个实施例中应用异常堆栈信息示意图;
图11为一个实施例中应用异常堆栈信息示意图;
图12为一个具体实施例中堆栈相似度算法示意图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的应用异常处理方法,可以应用于如图1所示的应用环境中。该应用环境涉及第一终端101、第二终端102以及服务器103,其中第一终端101、第二终端102通过网络与服务器103通过网络进行通信。其中,第一终端101为应用软件的使用者所在的终端,第二终端102为应用开发人员或者测试维护人员所在的终端,通常也可称之为WEB前台。WEB前台主要实现应用异常展示、解决方案录入、共性异常解决方案展示等;服务器103主要实现堆栈数据获取及其存储、堆栈数据聚合分析、推荐解决方案推送。该应用环境还可能涉及DB数据库104,该DB数据库用于存储堆栈数据及其修复解决方案,数据库104与服务器103之间可以通过网络进行通信。
服务器103获取安装在第一终端101上的应用软件发生异常时上报的堆栈信息,对该堆栈信息进行解析后确定该异常发生的应用模块,并根据确定的应用模块的模块特征类型确定该应用异常的异常类型。其中,终端101可以是但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器103可以用独立的服务器或者多个服务器组成的服务器集群来实现。
如图2所示,提供的一个实施例中的应用异常处理方法,可应用于图1中的服务器为例进行说明,包括步骤S210至步骤S230。
步骤S210:获取发生第一应用异常时上传的第一应用异常信息,所述第一应用异常信息包括:发生所述第一应用异常时捕获的第一异常堆栈信息。
本申请方案中,应用异常是指第一终端上的应用软件发生的crash(如异常中断或退出),本实施例中将终端检测到并上传的待解决的应用异常记为第一应用异常。以发生应用异常的是安装在第一终端上的一个游戏软件A为例,该游戏软件A在使用过程中发生了一个应用异常,记为第一应用异常,服务器103获取到的第一应用异常发生时上传的异常信息即为第一应用异常信息。获取的方式可以采用任何可能的方式,例如终端实时上传的第一应用异常信息,或者是在需要对各应用异常提供解决方案中,从数据库中提取的第一应用异常信息,此时,服务器在接收到各终端上传的应用异常信息后,存储在数据库,在主要对应用异常提供解决方案时,再从数据库中提取。其中,在一个实施例中,上传的异常信息包括可以包括异常堆栈信息,本实施例中记为上述第一异常堆栈信息。
步骤S220:解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块的第一模块类型特征。
其中,应用模块可以是程序中的一个函数,一个封闭的代码块,它具备固定的输入和输出接口。
在一个实施例中,解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块的第一模块类型特征,可以包括下述步骤一和步骤二。
步骤一:解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块。
通过解析第一异常堆栈信息,可以获得发生该第一应用异常的应用模块,本实施例中记为第一应用模块。其中,应用模块可以是任何可能的程序模块。
在一个实施例中,解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块时,可以采用下述方式进行:解析所述第一异常堆栈信息,确定所述第一异常堆栈信息的链接库信息;基于所述链接库信息,确定发生第一应用异常的第一应用模块。
此时,上述应用模块可以是指链接库信息模块。解析所述第一异常堆栈信息,确定所述第一异常堆栈信息的链接库信息时,可以采用任何可以解析堆栈信息的方式进行,只要能够解析出该堆栈信息的链接库信息即可,本实施例方案不做具体限定。
基于所述链接库信息,确定发生第一应用异常的第一应用模块时,可以基于任何可能的确定方式进行。
步骤二:根据所述第一应用模块的名称,确定所述第一应用模块的第一模块类型特征。
在一个实施例中,根据所述第一应用模块的名称,确定所述第一应用模块的第一模块类型特征,可以包括:根据所述链接库信息中的链接库名称,确定所述第一应用模块的第一模块类型特征。
在一个实施例中,链接库信息可以包括链接库名称和链接库类型,例如,一链接库信息为bugly.so,其中,bugly(用于堆栈上报的链接库)为链接库名称,.so为链接库类型。
一个实施例中,链接库包括动态链接库和静态链接库,例如.dylib表示ios系统(苹果公司开发的移动操作系统)的动态链接库;.so表示andriod系统(基于Linux的自由及开放源代码的操作系统)下的动态链接库;.lib表示静态链接库。
步骤S230:根据所述第一模块类型特征,确定所述第一应用异常的第一异常类型。
其中,第一模块类型特征表示发生第一应用异常的模块的模块类型,根据发生该第一应用异常的模块的模块类型特征将第一应用异常划分为第一异常类型。第一异常类型可以是例如公司组件异常、第三方组件异常、系统组件异常和自身逻辑异常中的一种。
上述应用异常处理方法,通过获取发生第一应用异常时上传第一异常堆栈信息,对第一异常堆栈信息解析后确定发生第一应用异常的第一应用模块的第一模块类型特征,根据第一模块类型特征将第一应用异常确定第一异常类型。通过上述方法,通过解析应用异常发生时上传的堆栈信息,获得该应用异常发生的模块,并按照应用异常发生的模块的模块类型特征,确定应用异常的异常类型,由于模块的多样性,从而增加了应用异常分类的维度,据此对应用异常进行分类,可以解决应用异常的定位问题,从而有效减少解决应用异常所花费的时间。
在一个实施例中,根据所述链接库信息中的链接库名称,确定所述第一应用模块的第一模块类型特征,具体可以是通过下述步骤实现。以将应用模块分为第一组件类型、第二组件类型、第三组件类型和自身逻辑组件为例,相应地,根据应用模块的类型将各应用模块的模块类型特征标记为第一组件类型、第二组件类型、第三组件类型和自身逻辑组件。
在一个实施例中,可在链接库名称属于第一组件的链接库名称范围时,判定所述应用模块的模块类型特征为第一组件类型。如,在一个实施例中,该第一组件类型可以为公司组件类型。在本实施例中,第一组件可以是指同各应用程序都会包含的相同的组件,通常是指某公司的不同应用程序中都会使用到的组件模块,如A公司下的各个应用程序都可能使用的某些组件模块,如登陆模块、验证模块。可以理解,对于不同公司的应用场景而言,第一组件所包含的组件名称或者链接库名称可以有所不同。例如,一些常见可能为公司组件的可以是例如堆栈上报的bugly,用于支付的midas等。
在一个实施例中,可在链接库名称属于第二组件的链接库名称范围时,判定所述应用模块的模块类型特征为第二组件类型;如在一个实施例中,第二组件类型为第三方组件类型。在本实施例中,第二组件可以是指需要调用的第三方系统的通用组件,如第三方搜索引擎链接库组件、输入法组件等。
在一个实施例中,可在所述链接库名称属于第三组件的链接库名称范围时,判定所述应用模块的模块类型特征为第三组件类型;在一个实施例中,第三组件类型为系统组件类型。在本实施例中,第三组件可以是指系统自带的一些公共库组件,例如libc.so等。
在一个实施例中,可在所述链接库名称在第一组件、第二组件以及第三组件的链接库名称范围之外时,判定所述应用模块的模块类型特征为自身逻辑组件,即是属于应用程序自身逻辑的组件。
一个实施例中,链接库信息中出现用于堆栈上报的bugly、用于支付的midas等时,判定所述应用模块的模块类型特征为公司组件;链接库信息中出现百度地图,搜狗输入法等则判定所述应用模块的模块类型特征为第三方组件;链接库信息中出现libc.so(Linux下的ANSI C的函数库)时,则判定所述应用模块的模块类型特征为系统库组件。
在一个实施例中,如图3所示,确定所述第一应用异常的第一异常类型之后,还包括步骤S240至步骤S250:
步骤S240:将所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈进行匹配,所述第一共性异常堆栈为所述第一异常类型对应的第一共性异常案例库中的各第二应用异常的共性堆栈。
其中,本申请的实施例中,将第一共性案例库中的各异常案例记为第二应用异常,将各异常案例的堆栈信息中的部分堆栈信息记为第二应用异常的共性堆栈,该部分堆栈信息包含发生该异常案例的模块的模块类型特征信息和函数调用关系等信息。
在一个实施例中,将所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈进行匹配,包括:
匹配所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈所在的模块的一致性,获得一致性匹配结果;
匹配所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈的堆栈特征的相似性,获得相似性匹配结果;
在所述一致性匹配结果为匹配且所述相似性匹配结果为相似时,判定所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈相匹配。
在一个具体实施例中,首先将第一异常堆栈信息与各第二应用异常的共性堆栈做模块一致性匹配,模块一致性匹配结果为一致时,将第一异常堆栈信息与该模块一致性匹配成功的第二应用异常的共性堆栈做堆栈特征相似性匹配,堆栈特征相似性匹配结果为相似时,则判定第一异常堆栈信息与该第二应用异常的共性堆栈相匹配。在另一个实施例中,也可以先对第一异常堆栈信息与各第二应用异常的共性堆栈做堆栈特征相似性匹配,获得相似性结果,然后再匹配所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈所在的模块的一致性,同样地,当一致性结果为一致且相似性匹配结果为相似时,判定第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈相匹配。
步骤S250:在所述第一异常堆栈信息与所述第一共性异常堆栈匹配成功时,将所述第一共性异常案例库对应的共性问题解决方案,确定为所述第一应用异常的推荐解决方案。
其中,第一共性异常案例库为收录了各个应用上传的应用异常、应用异常的堆栈信息以及该应用异常的解决方案的案例库。
在本实施例中,将第一应用异常的第一异常堆栈信息与第一共性异常案例库中各第二应用异常的共性堆栈进行匹配,当匹配成功时,将第一共性异常案例库中、匹配成功的第二应用异常的共性堆栈对应的第二应用异常对应的解决方案,确定为第一应用异常的推荐解决方案。
一个实施例中,将所述第一共性异常案例库对应的共性问题解决方案确定为第一应用异常的推荐解决方案后,还包括将该推荐解决方案推送到终端与第一应用异常对应的应用。
上述应用异常处理方法,通过将第一异常堆栈信息与第一共性异常案例库中的各第二应用异常的共性堆栈进行匹配,将匹配成功的第二应用异常的解决方案推送给第一应用异常,作为第一应用异常的推荐解决方案。由于第一共性异常案例库中收录了各个应用的应用异常及其堆栈信息和解决方案,因此通过在第一共性异常案例库中匹配解决方案,可以将符合要求的其他应用发生的应用异常的解决方案推荐给第一应用异常,实现了不同应用之间属于同种类型的应用异常问题的解决方案进行共享,可以有效减少开发人员寻找应用异常解决方案的时间。
在一个实施例中,将所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈进行匹配之前,还包括步骤:
遍历所述第一异常类型对应的第一共性异常案例库,提取第一共性异常案例库中的各第二应用异常的共性堆栈,作为所述第一共性异常堆栈。
在一个实施例中,如图4所示,所述第一共性异常案例库的建立方式,包括步骤S410至步骤S420。
步骤S410:收集各第三应用异常发生时的第三应用异常信息,所述第三应用异常信息包括:发生所述第三应用异常时捕获的第三异常堆栈信息,并通过解析各第三异常堆栈信息,确定发生各第三应用异常的第三应用模块的第三模块类型特征。
其中,本申请实施例中,将建立共性异常案例库时收集的应用异常记为第三应用异常。第三应用异常发生时的应用异常信息包括:发生所述第三应用异常时捕获的第三异常堆栈信息。对第三应用异常堆栈信息进行解析确定第三模块类型特征与对第一应用异常的第一异常堆栈信息解析的步骤类似,此处不再赘述。
步骤S420:根据发生各第三应用异常的第三应用模块的第三模块类型特征,确定各异常类型对应的共性异常案例库,所述异常类型包括所述第一异常类型,所述共性异常案例库包括所述第一共性异常案例库。
在一个实施例中,如图5所示,确定各异常类型对应的共性异常案例库之后,还包括步骤S430至步骤S440。目的是在第三应用异常被成功修复后,获取第三应用异常的解决方案以及共性堆栈,将该解决方案与共性堆栈信息录入与第三应用异常对应的共性异常案例库中。
步骤S430:获取被成功修复的第三应用异常的解决方案,并将该解决方案录入与被成功修复的第三应用异常对应的共性异常案例库的解决方案。
在一个实施例中,获取被成功修复的第三应用异常的解决方案包括:当检测到第三应用异常被修复时,通过发送提醒消息至第三应用异常发生的应用软件,提醒用户录入解决方案。在一个具体实施例中,可以通过邮件发送提醒消息至第三应用异常对应的第二终端,提醒负责跟进的人员录入解决方案。或者服务器向第二终端发送告警信息,由对应的应用测试经理负责跟进主要应用异常问题的原因和解决方案,当发现是组件类的共性问题时,由应用测试经理负责将应用异常及其解决方案录入共性异常案例库中。其中,组件类的共性问题表示应用异常的异常类型属于公司组件类型、第三方组件类型或者系统组件类型的应用异常。
步骤S440:遍历各异常类型对应的共性异常案例库,提取对应的共性异常案例库中的各第三应用异常的共性堆栈,作为各异常类型对应的共性异常堆栈。
在一个实施例中,所述第一应用异常信息还包括:发生所述第一应用异常的应用的应用标识;所述方法还包括:在与所述应用标识对应的应用异常的数目超过预定数目阈值时,发出告警信息。
在本实施例中,第一应用异常发生时,终端将第一应用异常信息上传至服务器,第一应用异常信息包括第一异常堆栈信息和发生第一应用异常的应用的应用标识,即服务器通过第一应用异常信息可以知道发生第一应用异常的应用以及发生第一应用异常的模块和函数调用关系等信息。
在一个实施例中,在与所述应用标识对应的应用异常的数目超过预定数目阈值时,通过邮件向发生第一应用异常的应用发出告警信息,以提醒应用跟进解决数目超过预定数目阈值的应用异常。
在一个实施例中,在预定时间内对应用标识对应的应用的应用异常数目进行统计,判断是否超过预定数目。具体可以是每天应用标识对应的应用发生的应用异常数目进行统计,当日该应用发生的应用异常数目超过预定数目时,则向该应用发出告警信息。在一个实施例中,也可以是每日对应用发生的应用异常率进行统计,当应用的当日应用异常率超过每日应用异常率阈值时,则向该项目发出告警信息。具体地,每日应用异常率可以设为3%。
在一个实施例中,如图6所示,应用异常处理方法还包括步骤S610至步骤S630。
步骤S610:接收解决方案执行信息,所述解决方案执行信息包括方案标识以及应用异常是否解决的信息。
步骤S620:根据接收的各解决方案执行信息,评估所述方案标识对应的解决方案对对应的应用异常的有效性获得评估结果。
步骤S630:基于各所述评估结果,标记所述方案标识对应的解决方案对对应的应用异常关联的应用标识的有效性。
其中,解决方案执行信息由第一应用异常发生的应用根据有效性评估结果确定。应用异常是否解决,可以根据在第一应用异常发生的应用按照推荐的共性问题解决方案做出修改后,是否依然出现该第一应用异常进行判断。若根据推荐解决方案修改后还是存在第一应用异常,则认定应用异常未被解决,即该推荐解决方案对于解决该第一应用异常无效;若根据推荐解决方案修改后不再出现该第一应用异常,则认定应用异常被解决,该推荐解决方案对于解决该第一应用异常有效。
在一个实施例中,步骤S610至步骤S630发生在对第一应用异常进行匹配推荐解决方案的步骤之后。目的是对推荐解决方案对于解决匹配到的第一应用异常是否有效进行评估。
在一个实施例中,如图7所示,还包括步骤S640:根据所述评估结果,确定所述解决方案标识对应的解决方案对各应用异常对应的应用标识的置信度。
在一个具体实施例中,一个解决方案对于各应用异常对应的应用的置信度表示该解决方案对解决匹配的各第一应用异常对应的应用的有效率。例如,解决方案B共匹配了N个应用异常,其中M个应用异常对应的应用对该解决方案的有效性进行了标记,其中X个项目标记为有效,M-X个项目标记为无效,那么X/M即表示该解决方案B对于各应用异常的置信度。
在一个实施例中,如图7所示,还包括步骤S650:在所述方案标识对应的解决方案的置信度小于置信度阈值时,调整该方案标识所在的共性异常案例库的共性异常堆栈,或者删除所述方案标识对应的解决方案。
进一步地,一个方案标识对应的解决方案的置信度小于置信度阈值时,则表明该方案标识对应的解决方案的共性异常堆栈不准确,或者该解决方案的针对性较强不能用于解决应用异常。可以对该方案标识所在的共性异常案例库的共性异常堆栈进行调整,或者将该方案标识对应的解决方案从共性异常案例库中删除。
在一个具体实施例中,解决方案B共匹配了N个项目,其中M个项目对该解决方案的有效性进行了标记,其中X个项目标记为有效,M-X个项目标记为无效,那么当X>3且X/M<30%时,即为该解决方案对于各应用异常的置信度小于置信度阈值,则认为该解决方案普遍无效。
上述应用异常处理方法,通过对解决方案对于解决各应用异常的有效性进行评估,以及解决方案对于各应用异常对应的应用标识的置信度进行标记,不断更新共性异常案例库,从而逐渐提高通过共性异常案例库为应用异常推荐解决方案的有效性。
在一个具体实施例中,如图8所示,为本实施例中建立第一共性问题案例库的步骤流程示意图,包括步骤:
步骤S811:对应用异常数目超过预定数目的应用进行告警;
在一个实施例中,服务器在预定时间内,对应用发生应用异常的数目进行监控,当某个应用发生应用异常的数目超过预定数目阈值时,对该应用进行告警。在一个实施例中,预定时间为一天,对应用异常发生的数目进行监控即为对每日应用异常发生率进行监控,当每日应用异常发生率超过预定值时,对该应用进行告警。具体可以通过邮件进行告警,服务器发送告警邮件至应用异常发生率超过预定值的应用对应的第二终端,由该应用对应的应用测试经理负责跟进主要应用异常问题的原因和解决方案,并答复邮件。当发现应用异常属于组件类的共性问题,就由应用测试经理录入案例库,由服务器平台管理员负责评估解决方案的通用性和有效性。
步骤S812:后台对应用异常修复进度进行监控;
一个实施例中,对于预定时间内应用异常数目未超过预定数目的应用进行应用异常修复进度监控,当后台识别到某个应用异常被修复,则通过邮件提醒对应的用户录入解决方案。
步骤S820:第三应用异常按模块分类;
一个实施例中,对第三应用异常的第三应用异常信息中的第三异常堆栈信息解析,确定第三应用异常的模块类型特征;根据模块类型特征对第三应用异常分类。
步骤S830:过滤掉属于自身逻辑问题;
因为异常类型为公司组件、第三方组件或系统组件的应用异常相互之间可能存在可以共用同种解决方案的情形,因此过滤掉由于自身逻辑导致的应用异常,保留其他类型的应用异常。
步骤S840:解决方案收集;
解决方案的收集包括两种方法:第一种:对应用异常数目超过预定数目阈值的应用进行告警,提醒跟进人进行跟进解决应用异常,并录入解决方案;第二种:后台应用异常修复监控,当后台识别到应用异常被修复时,通过发送邮件提醒对应的用户录入解决方案。
步骤S850:共性异常判断;
步骤S860:提炼共性异常堆栈;
其中,共性异常堆栈为第三应用异常的部分堆栈信息,其中该部分堆栈信息包括第三应用异常发生的模块和函数调用路径等信息。
步骤S870:录入共性异常案例库。
将第三应用异常、第三应用异常的解决方案、第三应用异常的共性异常堆栈录入共性异常案例库。
在一个具体实施例中,如图9所示,为本实施例中应用异常处理方法中为第一应用异常推荐解决方案的步骤流程示意图。包括步骤S910至步骤S980。
S910:遍历共性异常案例库;
一个实施例中,使用for循环对共性异常案例库进行遍历。在其它实施例中,也可以采用其它方法对共性异常案例库进行遍历。
S920:提取共性异常案例的共性异常堆栈。
S930:获取第一应用异常上传的第一应用异常信息。
其中,第一应用异常上传的第一应用异常信息包括第一异常堆栈信息。
S940:判断第一应用异常的模块类型特征与共性异常案例的模块类型特征是否一致?若是则跳转步骤S950;若否则跳转步骤S920,提取下一条共性异常案例的共性问题特征堆栈。
其中,判断第一应用异常的模块类型特征与共性异常案例的模块类型特征是否一致,是通过对比共性异常案例的共性异常堆栈和第一应用异常信息得出一致性结果。
S950:共性异常案例与第一应用异常做堆栈相似度计算;
S960:判断相似度是否大于相似度阈值?若是则跳转步骤S970;若否则跳转步骤S920,提取下一条共性问题案例的共性问题特征堆栈;
S970:匹配成功;
S980:将该共性异常案例的解决方案作为第一应用异常的推荐解决方案。
上述应用异常处理方法,通过遍历应用异常案例库,找到与第一应用异常的模块类型特征一致、且堆栈相似度大于相似度阈值的异常案例,将该异常案例的解决方案作为第一应用异常的推荐解决方案。
在一个具体实施例中,如图10和图11所示,为两个异常堆栈信息,从异常堆栈信息中可以解析得知,该两组异常堆栈信息同时包含了相同的组件关键字,且函数调用路径相似,则认定该两组异常堆栈信息对应的异常堆栈是相匹配的。在一个实施例中,堆栈相似度的算法为:
1)以图12为例,从下往上,run函数调用loop函数,称为一次调用,则图12中共有10次函数调用;
2)依次为每一次调用以n*(n+1)/2的方式赋权重,n为调用层级。run=>loop权重为1,loop=>dispatchMessage权重为3,dispatchMessage=>handleCallback权重为6,依次类推;
3)如果堆栈中出现了组件名称,如图10或图11中的虚线方框中的部分,则相应的微调权重,具体取值为调用层级n的1/2;
4)依次计算两个堆栈的所有调用的权重,并计算权重之和得到T1,T2,再从上往下寻找相同的调用路径,累加相同调用的权重得到C1,C2,堆栈相似度为(C1+C2)/(T1+T2),如果相似度大于相似度阈值,则认为两个堆栈相似。
在一个具体实施例中,相似度阈值可以设为0.9。
应该理解的是,虽然图2至图9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储应用异常处理数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述任意一种应用异常处理方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任意一种应用异常处理方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (12)

1.一种应用异常处理方法,其特征在于,包括步骤:
获取应用软件发生第一应用异常时上传的第一应用异常信息,所述第一应用异常信息包括:发生所述第一应用异常时捕获的第一异常堆栈信息;
解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块的第一模块类型特征;所述第一应用模块是指所述应用软件中发生所述第一应用异常的程序模块;
根据所述第一模块类型特征,确定所述第一应用异常的第一异常类型;
将所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈进行匹配,所述第一共性异常堆栈为所述第一异常类型对应的第一共性异常案例库中的各第二应用异常的共性堆栈;所述共性堆栈包括发生所述第二应用异常的程序模块的模块类型特征信息;所述模块类型特征信息是用于表征模块类型的特征信息;所述模块类型包括公司组件类型、第三方组件类型、系统组件类型和自身逻辑组件类型;
在所述第一异常堆栈信息与所述第一共性异常堆栈匹配成功时,将所述第一共性异常案例库对应的共性问题解决方案,确定为所述第一应用异常的推荐解决方案;
接收所述推荐解决方案的解决方案执行信息,所述解决方案执行信息包括方案标识以及应用异常是否解决的信息;
根据接收的各解决方案执行信息,评估所述方案标识对应的解决方案对对应的应用异常的有效性,获得评估结果;
基于所述评估结果,标记所述方案标识对应的解决方案对对应的应用异常关联的应用标识的有效性;所述应用标识是指发生所述第一应用异常的应用软件的标识;
根据各所述评估结果,确定所述解决方案标识对应的解决方案对各应用异常对应的应用标识的置信度。
2.根据权利要求1所述的方法,其特征在于,解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块的第一模块类型特征,包括:
解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块;
根据所述第一应用模块的名称,确定所述第一应用模块的第一模块类型特征。
3.根据权利要求2所述的方法,其特征在于,解析所述第一异常堆栈信息,确定发生第一应用异常的第一应用模块,包括:
解析所述第一异常堆栈信息,确定所述第一异常堆栈信息的链接库信息;
基于所述链接库信息,确定发生第一应用异常的第一应用模块。
4.根据权利要求3所述的方法,其特征在于,根据所述第一应用模块的名称,确定所述第一应用模块的第一模块类型特征,包括:
根据所述链接库信息中的链接库名称,确定所述第一应用模块的第一模块类型特征。
5.根据权利要求1所述的方法,其特征在于,将所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈进行匹配之前,还包括步骤:
遍历所述第一异常类型对应的第一共性异常案例库,提取第一共性异常案例库中的各第二应用异常的共性堆栈,作为所述第一共性异常堆栈。
6.根据权利要求1所述的方法,其特征在于,所述第一共性异常案例库的建立方式,包括:
收集各第三应用异常发生时的第三应用异常信息,所述第三应用异常信息包括:发生所述第三应用异常时捕获的第三异常堆栈信息,并通过解析各第三异常堆栈信息,确定发生各第三应用异常的第三应用模块的第三模块类型特征;
根据发生各第三应用异常的第三应用模块的第三模块类型特征,确定各异常类型对应的共性异常案例库,所述异常类型包括所述第一异常类型,所述共性异常案例库包括所述第一共性异常案例库。
7.根据权利要求6所述的方法,其特征在于,确定各异常类型对应的共性异常案例库之后,还包括步骤:
获取被成功修复的第三应用异常的解决方案,并将所述被成功修复的第三应用异常的解决方案,录入与被成功修复的第三应用异常对应的共性异常案例库的解决方案;
遍历各异常类型对应的共性异常案例库,提取对应的共性异常案例库中的各第三应用异常的共性堆栈,作为各异常类型对应的共性异常堆栈。
8.根据权利要求1所述的方法,其特征在于,将所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈进行匹配,包括:
匹配所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈所在的模块的一致性,获得一致性匹配结果;
匹配所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈的堆栈特征的相似性,获得相似性匹配结果;
在所述一致性匹配结果为匹配且所述相似性匹配结果为相似时,判定所述第一异常堆栈信息与所述第一异常类型对应的第一共性异常堆栈相匹配。
9.根据权利要求1所述的方法,其特征在于,所述第一应用异常信息还包括:发生所述第一应用异常的应用软件的应用标识;所述方法还包括:
在与所述应用标识对应的应用异常的数目超过预定数目阈值时,发出告警信息。
10.根据权利要求1所述的方法,其特征在于,还包括步骤:
在所述方案标识对应的解决方案的置信度小于置信度阈值时,调整所述方案标识所在的共性异常案例库的共性异常堆栈,或者删除所述方案标识对应的解决方案。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
CN201810448842.1A 2018-05-11 2018-05-11 应用异常处理方法、存储介质及计算机设备 Active CN108647106B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810448842.1A CN108647106B (zh) 2018-05-11 2018-05-11 应用异常处理方法、存储介质及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810448842.1A CN108647106B (zh) 2018-05-11 2018-05-11 应用异常处理方法、存储介质及计算机设备

Publications (2)

Publication Number Publication Date
CN108647106A CN108647106A (zh) 2018-10-12
CN108647106B true CN108647106B (zh) 2023-06-30

Family

ID=63754812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810448842.1A Active CN108647106B (zh) 2018-05-11 2018-05-11 应用异常处理方法、存储介质及计算机设备

Country Status (1)

Country Link
CN (1) CN108647106B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111950573A (zh) * 2019-05-16 2020-11-17 北京小米智能科技有限公司 异常问题聚类的方法及装置
CN112395119B (zh) * 2019-08-12 2024-03-12 北京达佳互联信息技术有限公司 异常数据处理方法、装置、服务器及存储介质
CN112084110A (zh) * 2020-09-08 2020-12-15 北京百度网讯科技有限公司 数据处理方法、装置、设备以及存储介质
CN113568773B (zh) * 2021-07-26 2024-04-19 北京达佳互联信息技术有限公司 一种异常服务分类方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273263A (zh) * 2017-05-26 2017-10-20 努比亚技术有限公司 一种异常运行的分析方法、应用终端及监控服务器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002095585A1 (en) * 2001-05-24 2002-11-28 Techtracker, Inc. Program execution stack signatures
US7596780B2 (en) * 2004-10-22 2009-09-29 Microsoft Corporation System and method for virtual catching of an exception
CN104572327A (zh) * 2014-12-24 2015-04-29 北京奇虎科技有限公司 一种浏览器崩溃的处理方法、装置和系统
CN106201757B (zh) * 2016-07-12 2020-05-26 网易(杭州)网络有限公司 一种异常处理方法和装置
CN106294134B (zh) * 2016-07-29 2018-02-23 腾讯科技(深圳)有限公司 代码的崩溃定位方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273263A (zh) * 2017-05-26 2017-10-20 努比亚技术有限公司 一种异常运行的分析方法、应用终端及监控服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于VxWorks跨平台异常处理模块的研究与实现;郭继宁等;电子测试;第96-97、85页 *

Also Published As

Publication number Publication date
CN108647106A (zh) 2018-10-12

Similar Documents

Publication Publication Date Title
CN108647106B (zh) 应用异常处理方法、存储介质及计算机设备
CN109446068B (zh) 接口测试方法、装置、计算机设备和存储介质
CN111078513B (zh) 日志处理方法、装置、设备、存储介质及日志告警系统
WO2019041859A1 (zh) 监察信息处理方法、装置、服务器和存储介质
CN107896170B (zh) 保险应用系统的监控方法及装置
CN108256322B (zh) 安全测试方法、装置、计算机设备和存储介质
CN109495291B (zh) 调用异常的定位方法、装置和服务器
KR101444308B1 (ko) 정보 유출 조기 경보 시스템
CN115174231B (zh) 一种基于AI Knowledge Base的网络欺诈分析方法及服务器
CN113132297B (zh) 数据泄露的检测方法及装置
CN109325058B (zh) 规则批量比对方法、装置、计算机设备和存储介质
CN113553583A (zh) 信息系统资产安全风险评估方法与装置
CN112819611A (zh) 欺诈识别方法、装置、电子设备和计算机可读存储介质
CN111092880B (zh) 一种网络流量数据提取方法及装置
CN112286827A (zh) 一种软件测试方法、设备、电子设备及存储介质
CN109271453B (zh) 一种数据库容量的确定方法和装置
CN113837584B (zh) 业务处理系统和基于业务处理系统的异常数据处理方法
CN111143103A (zh) 一种关联关系确定方法、装置、设备及可读存储介质
CN108111328B (zh) 一种异常处理方法及装置
CN113591079A (zh) 获取异常应用安装包的方法、装置及电子设备
CN117319001A (zh) 网络安全评估方法、装置、存储介质和计算机设备
CN113326064A (zh) 划分业务逻辑模块的方法、电子设备及存储介质
CN112417007A (zh) 一种数据分析方法、装置、电子设备及存储介质
CN112612679A (zh) 系统运行状态监控方法、装置、计算机设备和存储介质
CN112988523A (zh) 一种多维度的游戏系统告警方法和系统

Legal Events

Date Code Title Description
PB01 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