CN110647472A - 崩溃信息统计方法、装置、计算机设备及存储介质 - Google Patents

崩溃信息统计方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110647472A
CN110647472A CN201910924538.4A CN201910924538A CN110647472A CN 110647472 A CN110647472 A CN 110647472A CN 201910924538 A CN201910924538 A CN 201910924538A CN 110647472 A CN110647472 A CN 110647472A
Authority
CN
China
Prior art keywords
crash
information
program
crash information
level
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
CN201910924538.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 Bo Hongyuan Data Polytron Technologies Inc
Original Assignee
Beijing Bo Hongyuan Data Polytron Technologies Inc
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 Bo Hongyuan Data Polytron Technologies Inc filed Critical Beijing Bo Hongyuan Data Polytron Technologies Inc
Priority to CN201910924538.4A priority Critical patent/CN110647472A/zh
Publication of CN110647472A publication Critical patent/CN110647472A/zh
Pending legal-status Critical Current

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
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种崩溃信息统计方法、装置、计算机设备及存储介质。所述方法包括:获取崩溃信息;根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。本发明实施例可以实现合理配置崩溃信息的统计策略,提高崩溃定位的效率。

Description

崩溃信息统计方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及数据处理领域,尤其涉及一种崩溃信息统计方法、装置、计算机设备及存储介质。
背景技术
移动应用崩溃是客户端运行过程中出现的最为严重的问题,会导致服务突然中断,用户体验受损严重,因此对于移动应用崩溃的监测和分析就显得十分重要,是每一个客户端研发人员都最为关注的问题。
为了定位崩溃问题,往往需要对崩溃先进行归类,再通过一些指标对归类后的崩溃进行排序,按照崩溃的严重性和优先级逐一解决,能够达到提高崩溃排查效率,最小化崩溃影响程度和范围的目的。
传统的崩溃分组合并机制,存在分类规则过粗,或分类规则过细,缺乏策略的问题。其中,分类规则过粗,例如使用崩溃类型分类或使用崩溃原因分类,导致得到每类崩溃不是由一个问题引起的,也即划分的形成的每类崩溃往往是由多类问题引起,需要逐一查看详细堆栈,才能确定每类问题的内容;分类规则过细,例如根据完整堆栈内容进行分类统计,导致实际和未分类差别不大,大量相同或不同类型的崩溃交叉排列在一起,无法起到快速查看并确定由同一类问题引起的崩溃。上述两种分类方法导致研发人员在定位崩溃问题时效率低下,从而降低崩溃解决的效率。
发明内容
本发明实施例提供了一种崩溃信息统计方法、装置、计算机设备及存储介质,可以实现合理配置崩溃信息的统计策略,提高崩溃定位和解决的效率。
第一方面,本发明实施例提供了一种崩溃信息统计方法,包括:
获取崩溃信息;
根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;
采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
第二方面,本发明实施例提供了一种崩溃信息统计装置,包括:
崩溃信息获取模块,用于获取崩溃信息;
崩溃信息级别确定模块,用于根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;
崩溃信息统计模块,用于采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明实施例中任一所述的崩溃信息统计方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的崩溃信息统计方法。
本发明实施例通过对崩溃信息按照崩溃的程序级别进行分类,并按照不同的程序级别,采用不同的统计策略对每个崩溃信息进行统计,解决了现有技术中根据分类后的崩溃对应的问题不能确定导致崩溃问题定位效率低的问题,实现根据崩溃的影响范围选择匹配的统计策略进行统计,提高崩溃归类的精准性,提高崩溃问题的定位效率,从而提高崩溃问题的解决效率。
附图说明
图1是本发明实施例一中的一种崩溃信息统计方法的流程图;
图2a是本发明实施例二中的一种崩溃信息统计方法的流程图;
图2b是本发明实施例二中的一种崩溃信息统计结果显示界面的示意图;
图3是本发明实施例三中的一种崩溃信息统计装置的结构示意图;
图4是本发明实施例四中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一中的一种崩溃信息统计方法的流程图,本实施例可适用于对崩溃信息进行整合统计的情况,该方法可以由本发明实施例提供的崩溃信息统计装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中,例如终端设备或服务器等。如图1所示,本实施例的方法具体包括:
S110,获取崩溃信息。
崩溃(Crash)是指应用产生了系统不允许的行为时,系统终止其运行导致的现象。
当应用崩溃时,会产生崩溃日志并存储在本机设备上。从而,可以从本机设备的数据库或文件系统中,获取崩溃日志,并从崩溃日志中提取崩溃信息。崩溃日志描述应用终止时所处的运行环境信息,崩溃日志记录有完整的线程追溯信息,用于定位崩溃的问题。
具体的,崩溃日志包括崩溃信息,崩溃信息具体包括汇总信息、异常信息、堆栈信息和二进制镜像等。其中,汇总信息用于描述崩溃发生的运行环境的基本信息,具体包括下述至少一项:日志标识、设备标识、宿主程序的名称、宿主程序的版本号和宿主程序的架构等。异常信息可以包括下述至少一项:异常代码(Exception Codes)、异常子类型(Exception Subtype)、异常消息(Exception Message)、异常类型(Exception Type)、异常原因(Termination Reason)和异常线程(Triggered Thread)。堆栈信息描述了发生异常的调用链中独立栈帧的详细信息,如栈帧号、执行函数所在的二进制包、地址信息和函数名等。二进制镜像包括二进制镜像在程序内的地址空间、二进制的名称或者IOS操作系统运行的宿主程序的唯一标识(BundleID)、二进制镜像的架构信息(如Arm64等)、二进制镜像的通用唯一识别码(Universally Unique Identifier,UUID),用于在符号化日志时定位对应的dSYM文件和磁盘上的二进制路径等。
获取崩溃信息,实际上是为了获取崩溃信息中的堆栈信息。
S120,根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别。
可以通过判断崩溃信息的堆栈信息是否包括的宿主程序的名称的关键字和功能程序的关键字,来判断崩溃信息的程序级别。其中,宿主程序以系统为运行环境,功能程序以宿主程序为运行环境。
程序级别用于描述崩溃的严重程度,具体可以包括系统级别、宿主程序级别和功能程序级别。其中,系统级别的崩溃信息可以是指本机设备运行的操作系统引起的崩溃;宿主程序级别的崩溃信息可以是指本机设备运行的应用程序(如客户端)引起的崩溃;功能程序级别的崩溃信息可以是指以本机设备运行的应用程序(如客户端)为运行环境的程序引起的崩溃。其中,以本机设备运行的应用程序(如客户端)为运行环境的程序,可以是指软件开发工具包(Software Development Kit,SDK)。通常,SDK以应用程序为运行环境,该应用程序作为宿主程序。
通常在崩溃信息中记录有宿主程序的名称,可以根据宿主程序的名称在堆栈信息中进行查询,如果在堆栈信息中查询到与该宿主程序的名称匹配的关键字,确定崩溃信息的程序级别为宿主程序级别。还可以在堆栈信息中查询SDK的关键字,如果在堆栈信息中查询到与该SDK的关键字匹配的关键字,确定崩溃信息的程序级别为功能程序级别。
可选的,所述根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,包括:从所述崩溃信息中获取宿主程序的名称,并在所述崩溃信息的堆栈信息中查询;如果所述堆栈信息中存在与所述宿主程序的名称匹配的关键字,则确定所述崩溃信息的程序级别为宿主程序级别;如果所述堆栈信息中不存在与所述宿主程序的名称匹配的关键字,且所述堆栈信息中存在包含功能程序的关键字,则确定所述崩溃信息的程序级别为功能程序级别;如果所述堆栈信息中不存在与所述宿主程序的名称匹配的关键字,且所述堆栈信息中不存在包含功能程序的关键字,则确定所述崩溃信息的程序级别为系统级别。
具体的,可以从崩溃信息中获取宿主程序的名称,例如,通过Appname字段查询,将Appname字段中包名的前两段作为宿主程序的名称。需要说明的是,取包名前两段是为了最大化兼容各种开发场景,有一些宿主程序在包名的第三段开始会使用不同的路径划分不同的模块或第三方插件,但实际的宿主程序的名称可能只用其中某一个路径。
在堆栈信息中查询与宿主程序的名称匹配的关键字,以判断崩溃信息是否是宿主程序关联的崩溃,也即判断崩溃信息的程序级别是否为宿主程序级别。宿主程序的名称匹配的关键字用于标识宿主程序的名称。
如果堆栈信息中不存在与宿主程序的名称匹配的关键字,确定该崩溃信息不是与宿主程序关联的崩溃。
包含功能程序的关键字用于标识功能程序,示例性的,包含功能程序的关键字为包括SDK的关键字。如果堆栈信息中不存在与宿主程序的名称匹配的关键字,且包含功能程序的关键字,确定该崩溃信息是与功能程序关联的崩溃。
如果堆栈信息中不存在与宿主程序的名称匹配的关键字,且不包含功能程序的关键字,确定该崩溃信息是与系统关联的崩溃。
通过堆栈信息包括的与程序有关的关键字,确定崩溃信息的程序级别,实现从程序级别上对崩溃信息进行分类,提高崩溃信息的分类精度,并根据程序级别进一步确定统计策略,实现合理配置崩溃信息的统计策略,从而提高崩溃信息的统计方法的适用性。
S130,采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
统计策略用于对崩溃信息进行统计。
可以理解的是,功能程序级别的崩溃的影响范围包括功能程序,宿主程序级别的崩溃的影响范围包括该宿主程序,还包括以该宿主程序为运行环境的各功能程序。系统级别的崩溃的影响范围包括系统,还包括以系统为运行环境的各宿主程序,以及分别以各宿主程序为运行环境的功能程序。从而,系统级别的影响范围大于宿主程序级别的影响范围,宿主程序级别的影响范围大于功能程序级别的影响范围。相应的,系统级别高于宿主程序级别,宿主程序级别高于功能程序级别。
实际上,崩溃的影响范围越大,分类越细,即分类程度越高;崩溃的影响范围越小,分类越粗,即分类程度越低;。具体的,崩溃的影响范围越小,即程序级别的等级越低,崩溃可归类的问题类型的数量越少,从而,可以选择粗粒度的统计策略对崩溃信息进行归类。崩溃的影响范围越大,即程序级别的等级越高,崩溃可归类的问题类型的数量越多,从而,可以选择细粒度的统计策略对崩溃信息进行归类。
具体的,根据程序级别与分类程度的对应关系,以及确定的程序级别,选择分类程度与程序级别匹配的统计策略。其中,程度级别越高,分类程度越高;程度级别越低,分类程度越低。
可选的,所述崩溃信息的程序级别为功能程序级别;所述采用与所述程序级别匹配的统计策略,对崩溃信息进行统计,包括:获取所述崩溃信息的崩溃异常类型;将所述崩溃信息统计到与所述崩溃异常类型匹配的类别下。
其中,崩溃异常类型用于描述崩溃的类型,例如,发生空指针异常(Null PointerException)或发生无效状态异常(Illegal State Exception)等。
将崩溃信息统计到与崩溃异常类型匹配的类别下,是指将崩溃异常类型相同的崩溃信息归类到同一组。也即,将崩溃异常类型相同的功能程序级别的崩溃信息划分为同一类崩溃信息。
由于功能程序对应的代码量少,影响的范围小,以及崩溃造成的严重程度低,排查工作量少,定位崩溃问题的难度低,从而,可以采用粗粒度的分类方式,仅通过崩溃异常类型进行统计即可。此外,还可以采用其他粗粒度的统计策略对功能程序级别的崩溃信息进行统计,本发明实施例不做具体限制。
崩溃信息细化到功能程序级别,方便SDK开发者将此类崩溃直接按异常类型打包导出排查,在宿主程序的报表界面中不做过多的展开,可以简化报表界面的显示内容。
通过根据崩溃异常类型对功能程序级别的崩溃信息进行统计,选择粗粒度的统计策略对功能程序级别的崩溃信息进行统计,减少分类过细导致分类与不分类的区别小导致多余分类的情况,从而提高崩溃问题的排查效率。
可选的,所述崩溃信息的程序级别为宿主程序级别;所述采用与所述程序级别匹配的统计策略,对崩溃信息进行统计,包括:获取所述崩溃信息中的崩溃参数;所述崩溃参数包括:崩溃异常类型、崩溃原因和崩溃关键方法;获取所述堆栈信息中所述宿主程序的名称关联的首个堆栈段的连续多个堆栈行,作为所述崩溃信息的分类堆栈;根据所述崩溃参数和所述分类堆栈,对所述崩溃信息进行统计。
其中,崩溃原因用于描述引起崩溃的原因,示例性的,崩溃原因是指“Caused by:”为开头进行标识的字段。崩溃关键方法用于描述堆栈信息中起始信息,示例性的,栈顶的第一个宿主程序关联的堆栈行。
堆栈信息中宿主程序的名称关联的首个堆栈段的连续多个堆栈行可以是指,首个包含宿主程序的名称的堆栈段中的前三行,如果该堆栈段包括的堆栈行的数量小于3,则将该堆栈段包括的全部堆栈行作为分类堆栈。
根据崩溃参数和分类堆栈,对崩溃信息进行统计,具体是,将具备相同崩溃参数和分类堆栈的崩溃信息归类到同一组,其中,相同的崩溃参数是指,崩溃异常类型、崩溃原因和崩溃关键方法均相同。
由于宿主程序对应的代码量中等,影响的范围中等,以及崩溃造成的严重程度中等,排查工作量中等,定位崩溃问题的难度中等,从而,可以采用中等粒度的分类方式,通过崩溃参数和分类堆栈等标识信息进行统计。
通过根据崩溃参数和分类堆栈等标识信息对宿主程序级别的崩溃信息进行统计,选择中等粒度的统计策略对系统级别的崩溃信息进行统计,在保证同一组的崩溃信息是由一个问题引起的同时,还可以保证同一组包括多个崩溃信息,提高崩溃信息的统计精度,实现准确定位引起系统级别的崩溃的问题,从而提高崩溃问题的排查效率。
可选的,所述崩溃信息的程序级别为系统级别;所述采用与所述程序级别匹配的统计策略,对崩溃信息进行统计,包括:获取所述崩溃信息的堆栈信息;将所述崩溃信息统计到与所述堆栈信息匹配的类别下。
其中,将崩溃信息统计到与堆栈信息匹配的类别下,是指将具有相同堆栈信息的崩溃信息归类到同一组。也即,将堆栈信息相同的系统级别的崩溃信息划分为同一类崩溃信息。
由于系统对应的代码量最多,影响的范围最大,以及崩溃造成的严重程度最高,排查工作量最大,定位崩溃问题的难度最高,从而,可以采用细粒度的分类方式,通过完整的堆栈信息进行详细统计。
通过根据堆栈信息对系统级别的崩溃信息进行统计,选择细粒度的统计策略对系统级别的崩溃信息进行统计,保证归类到同一组系统级别的崩溃信息是仅由一个问题引起的,提高崩溃信息的统计精度,实现准确定位引起系统级别的崩溃的问题,从而提高崩溃问题的排查效率。
在上述实施例的基础上,可选的,在获取崩溃信息之后,在根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别之前,还包括:在所述崩溃信息中删除内存地址。
内存地址用于标识本机设备,具体的,内存地址是16进制内存地址。不同设备的内存地址不同。在崩溃信息中删除内存地址实际是在对崩溃信息的堆栈信息中删除内存地址。
删除内存地址用于对崩溃信息进行清洗,简化崩溃信息。在删除内存地址后,可以排除设备的机型对统计的影响,从而提高精确整合崩溃信息。
可选的,在获取崩溃信息之后,在根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别之前,还包括:如果存在所述崩溃信息匹配的符号表文件,则对所述崩溃信息进行符号化解析。
其中,符号表文件用于对崩溃信息进行符号化解析。符号化解析用于将内存地址替换为更直观的函数名以及行数。对崩溃信息进行符号化解析实际是对崩溃信息中的堆栈信息进行符号化解析。
通常,堆栈信息为十六进制内存地址的形式,难以进行分析,由此,在对崩溃信息进行解析之前,需要对崩溃信息进行符号化解析。
可以预先判断是否存在与崩溃信息中版本号相同的符号表文件,如果存在该符号表文件,则根据该符号表文件将堆栈信息中的十六进制内存地址转换为地址指向的函数名和行数。
通过判断符号表文件,并在符号表文件存在时,采用符号表文件进行符号化解析,得到可以直接进行识别的数据,并根据解析后的崩溃信息进行分析统计,使崩溃信息的统计更加精确。
本发明实施例通过对崩溃信息按照崩溃的程序级别进行分类,并按照不同的程序级别,采用不同的统计策略对每个崩溃信息进行统计,解决了现有技术中根据分类后的崩溃对应的问题不能确定导致崩溃问题定位效率低的问题,实现根据崩溃的影响范围选择匹配的统计策略进行统计,提高崩溃归类的精准性,提高崩溃问题的定位效率,从而提高崩溃问题的解决效率。
实施例二
图2为本发明实施例二中的一种崩溃信息统计方法的流程图,本实施例以上述实施例为基础进行具体化。如图2所示,本实施例的方法具体包括:
S201,获取崩溃信息中的堆栈信息。
S202,判断是否存在与所述崩溃信息中的版本号匹配的符号表文件,如果是,则执行S203;否者执行S204。
S203,根据所述符号表文件对所述堆栈信息进行符号化解析。
S204,在所述堆栈信息中删除内存地址。
S205,从所述崩溃信息中获取宿主程序的名称,并在所述崩溃信息的堆栈信息中查询。
S206,判断所述堆栈信息中是否存在与所述宿主程序的名称匹配的关键字,如果是,则执行S207,否则执行S208。
判断所述堆栈信息中是否存在与所述宿主程序的名称匹配的关键字,实际是判断堆栈信息中是否包含Appname的堆栈段。其中,Appname为包名的前两段。
S207,确定所述崩溃信息的程序级别为宿主程序级别,根据崩溃参数和分类堆栈,对所述崩溃信息进行统计。
其中,获取所述崩溃信息中的崩溃参数;所述崩溃参数包括:崩溃异常类型、崩溃原因和崩溃关键方法;获取所述堆栈信息中所述宿主程序的名称关联的首个堆栈段的连续多个堆栈行,作为所述崩溃信息的分类堆栈。分类堆栈实际为第一个连续的包含Appname的堆栈段的前3行。
将崩溃异常类型、崩溃原因、崩溃关键方法和分类堆栈均相同的崩溃信息作为同一类崩溃信息。
S208,判断所述堆栈信息是否存在包含功能程序的关键字,如果是,则执行S209,否则执行S210。
具体的,包含功能程序的关键字可以是指,包含SDK的关键字。
S209,确定所所述崩溃信息的程序级别为功能程序级别,获取所述崩溃信息的崩溃异常类型,并将所述崩溃信息统计到与所述崩溃异常类型匹配的类别下。
S210,确定所述崩溃信息的程序级别为系统级别,获取所述崩溃信息的堆栈信息,并将所述崩溃信息统计到与所述堆栈信息匹配的类别下。
按照本实施例提供的崩溃信息统计得到的一组崩溃信息实际是以相同触发方式、出发点和解决方案整合形成的崩溃信息,可以采用同一种解决方案解决引起崩溃信息的问题。
此外,在对崩溃信息进行统计之后,还可以包括:确定统计形成的各崩溃组的严重程度和优先级。从而,研发人员可以按照严重程度和优先级对每一类问题逐一解决,避免翻阅所有的崩溃信息,从而大大提升了崩溃问题的解决效率,同时也方便后续对崩溃问题进行跟踪。
在一个例子中,统计得到的结果如图2b所示,崩溃问题ID用于表示不同过的崩溃信息的分组。发生时间可以是对每组中崩溃信息中发生时间的统计结果。发生次数可以是指每组包括的崩溃信息的数量。最后修复时间可以是指引起该组的崩溃信息的问题的最近的时间。是否修复可以是指引起该组的崩溃信息的问题是否已经解决。
本发明实施例通过对崩溃信息进行简化,提高崩溃信息的精确程度,根据崩溃信息的堆栈信息中的关键字,确定崩溃信息的程序级别,并按照不同的程序级别,采用不同粗细粒度的统计策略对每个崩溃信息进行统计,提高崩溃归类的精准性,提高崩溃问题的定位效率,从而提高崩溃问题的解决效率。
实施例三
图3为本发明实施例三中的一种崩溃信息统计装置的示意图。实施例三是实现本发明上述实施例提供的崩溃信息统计方法的相应装置,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备等。
相应的,本实施例的装置可以包括:
崩溃信息获取模块310,用于获取崩溃信息;
崩溃信息级别确定模块320,用于根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;
崩溃信息统计模块330,用于采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
本发明实施例通过对崩溃信息按照崩溃的程序级别进行分类,并按照不同的程序级别,采用不同的统计策略对每个崩溃信息进行统计,解决了现有技术中根据分类后的崩溃对应的问题不能确定导致崩溃问题定位效率低的问题,实现根据崩溃的影响范围选择匹配的统计策略进行统计,提高崩溃归类的精准性,提高崩溃问题的定位效率,从而提高崩溃问题的解决效率。
进一步的,所述崩溃信息级别确定模块320,包括:程序级别判断单元,用于从所述崩溃信息中获取宿主程序的名称,并在所述崩溃信息的堆栈信息中查询;如果所述堆栈信息中存在与所述宿主程序的名称匹配的关键字,则确定所述崩溃信息的程序级别为宿主程序级别;如果所述堆栈信息中不存在与所述宿主程序的名称匹配的关键字,且所述堆栈信息中存在包含功能程序的关键字,则确定所述崩溃信息的程序级别为功能程序级别;如果所述堆栈信息中不存在与所述宿主程序的名称匹配的关键字,且所述堆栈信息中不存在包含功能程序的关键字,则确定所述崩溃信息的程序级别为系统级别。
进一步的,所述崩溃信息的程序级别为宿主程序级别;所述崩溃信息统计模块330,包括:宿主程序级别统计单元,用于获取所述崩溃信息中的崩溃参数;所述崩溃参数包括:崩溃异常类型、崩溃原因和崩溃关键方法;获取所述堆栈信息中所述宿主程序的名称关联的首个堆栈段的连续多个堆栈行,作为所述崩溃信息的分类堆栈;根据所述崩溃参数和所述分类堆栈,对所述崩溃信息进行统计。
进一步的,所述崩溃信息的程序级别为功能程序级别;所述崩溃信息统计模块330,包括:功能程序级别统计单元,用于获取所述崩溃信息的崩溃异常类型;将所述崩溃信息统计到与所述崩溃异常类型匹配的类别下。
进一步的,所述崩溃信息的程序级别为系统级别;所述崩溃信息统计模块330,包括:系统级别统计单元,用于获取所述崩溃信息的堆栈信息;将所述崩溃信息统计到与所述堆栈信息匹配的类别下。
进一步的,所述崩溃信息统计装置,还包括:内存地址删除模块,用于在获取崩溃信息之后,在根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别之前,在所述崩溃信息中删除内存地址。
进一步的,所述崩溃信息统计装置,还包括:符号化解析模块,用于在获取崩溃信息之后,在根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别之前,如果存在所述崩溃信息匹配的符号表文件,则对所述崩溃信息进行符号化解析。
上述崩溃信息统计装置可执行本发明实施例所提供的崩溃信息统计方法,具备执行的崩溃信息统计方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。计算机设备12可以是挂接在高速工业控制总线上的设备。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM),数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local AreaNetwork,LAN),广域网(Wide Area Network,WAN)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、(Redundant Arrays of Inexpensive Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例所提供的一种崩溃信息统计方法。
实施例五
本发明实施例五提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的崩溃信息统计方法:
也即,该程序被处理器执行时实现:获取崩溃信息;根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、只读存储器(Read OnlyMemory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、无线电频率(RadioFrequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括LAN或WAN——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种崩溃信息统计方法,其特征在于,包括:
获取崩溃信息;
根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;
采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
2.根据权利要求1所述的方法,其特征在于,所述根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,包括:
从所述崩溃信息中获取宿主程序的名称,并在所述崩溃信息的堆栈信息中查询;
如果所述堆栈信息中存在与所述宿主程序的名称匹配的关键字,则确定所述崩溃信息的程序级别为宿主程序级别;
如果所述堆栈信息中不存在与所述宿主程序的名称匹配的关键字,且所述堆栈信息中存在包含功能程序的关键字,则确定所述崩溃信息的程序级别为功能程序级别;
如果所述堆栈信息中不存在与所述宿主程序的名称匹配的关键字,且所述堆栈信息中不存在包含功能程序的关键字,则确定所述崩溃信息的程序级别为系统级别。
3.根据权利要求2所述的方法,其特征在于,所述崩溃信息的程序级别为宿主程序级别;
所述采用与所述程序级别匹配的统计策略,对崩溃信息进行统计,包括:
获取所述崩溃信息中的崩溃参数;所述崩溃参数包括:崩溃异常类型、崩溃原因和崩溃关键方法;
获取所述堆栈信息中所述宿主程序的名称关联的首个堆栈段的连续多个堆栈行,作为所述崩溃信息的分类堆栈;
根据所述崩溃参数和所述分类堆栈,对所述崩溃信息进行统计。
4.根据权利要求2所述的方法,其特征在于,所述崩溃信息的程序级别为功能程序级别;
所述采用与所述程序级别匹配的统计策略,对崩溃信息进行统计,包括:
获取所述崩溃信息的崩溃异常类型;
将所述崩溃信息统计到与所述崩溃异常类型匹配的类别下。
5.根据权利要求2所述的方法,其特征在于,所述崩溃信息的程序级别为系统级别;
所述采用与所述程序级别匹配的统计策略,对崩溃信息进行统计,包括:
获取所述崩溃信息的堆栈信息;
将所述崩溃信息统计到与所述堆栈信息匹配的类别下。
6.根据权利要求1所述的方法,其特征在于,在获取崩溃信息之后,在根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别之前,还包括:
在所述崩溃信息中删除内存地址。
7.根据权利要求1所述的方法,其特征在于,在获取崩溃信息之后,在根据所述崩溃信息中包括的关键字,确定所述崩溃信息的程序级别之前,还包括:
如果存在所述崩溃信息匹配的符号表文件,则对所述崩溃信息进行符号化解析。
8.一种崩溃信息统计装置,其特征在于,包括:
崩溃信息获取模块,用于获取崩溃信息;
崩溃信息级别确定模块,用于根据所述崩溃信息的堆栈信息中包括的关键字,确定所述崩溃信息的程序级别,其中,所述程序级别包括系统级别、宿主程序级别和功能程序级别;
崩溃信息统计模块,用于采用与所述程序级别匹配的统计策略,对崩溃信息进行统计。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一所述的崩溃信息统计方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的崩溃信息统计方法。
CN201910924538.4A 2019-09-27 2019-09-27 崩溃信息统计方法、装置、计算机设备及存储介质 Pending CN110647472A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910924538.4A CN110647472A (zh) 2019-09-27 2019-09-27 崩溃信息统计方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910924538.4A CN110647472A (zh) 2019-09-27 2019-09-27 崩溃信息统计方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN110647472A true CN110647472A (zh) 2020-01-03

Family

ID=68992944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910924538.4A Pending CN110647472A (zh) 2019-09-27 2019-09-27 崩溃信息统计方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110647472A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813664A (zh) * 2020-06-19 2020-10-23 北京字节跳动网络技术有限公司 一种崩溃信息收集方法、装置、介质和设备
CN112306833A (zh) * 2020-10-28 2021-02-02 广州虎牙科技有限公司 应用程序的崩溃统计方法、装置、计算机设备及存储介质
CN113110952A (zh) * 2021-04-09 2021-07-13 北京沃东天骏信息技术有限公司 获取应用程序中的sdk异常信息的方法和装置
CN114020504A (zh) * 2021-10-19 2022-02-08 北京五八信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114546700A (zh) * 2022-02-25 2022-05-27 创优数字科技(广东)有限公司 一种异常日志的数据处理方法、系统及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140310562A1 (en) * 2013-04-15 2014-10-16 Tencent Technology (Shenzhen) Company Limited Method and Device For Signing Program Crash
US20150347220A1 (en) * 2014-05-30 2015-12-03 Crittercism, Inc. System for Monitoring and Tracking Application Crashes Occurring on Different Mobile Devices
CN106528409A (zh) * 2016-10-20 2017-03-22 腾讯音乐娱乐(深圳)有限公司 一种程序崩溃问题查找方法和装置
CN107861865A (zh) * 2017-08-29 2018-03-30 平安普惠企业管理有限公司 Sdk定位方法、设备及计算机可读存储介质
CN108228446A (zh) * 2016-12-14 2018-06-29 北京国双科技有限公司 一种软件异常处理方法及软件检测装置
CN108694108A (zh) * 2017-04-11 2018-10-23 北京京东尚科信息技术有限公司 一种iOS崩溃数据分类与统计的方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140310562A1 (en) * 2013-04-15 2014-10-16 Tencent Technology (Shenzhen) Company Limited Method and Device For Signing Program Crash
US20150347220A1 (en) * 2014-05-30 2015-12-03 Crittercism, Inc. System for Monitoring and Tracking Application Crashes Occurring on Different Mobile Devices
CN106528409A (zh) * 2016-10-20 2017-03-22 腾讯音乐娱乐(深圳)有限公司 一种程序崩溃问题查找方法和装置
CN108228446A (zh) * 2016-12-14 2018-06-29 北京国双科技有限公司 一种软件异常处理方法及软件检测装置
CN108694108A (zh) * 2017-04-11 2018-10-23 北京京东尚科信息技术有限公司 一种iOS崩溃数据分类与统计的方法和装置
CN107861865A (zh) * 2017-08-29 2018-03-30 平安普惠企业管理有限公司 Sdk定位方法、设备及计算机可读存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813664A (zh) * 2020-06-19 2020-10-23 北京字节跳动网络技术有限公司 一种崩溃信息收集方法、装置、介质和设备
CN111813664B (zh) * 2020-06-19 2024-02-13 北京字节跳动网络技术有限公司 一种崩溃信息收集方法、装置、介质和设备
CN112306833A (zh) * 2020-10-28 2021-02-02 广州虎牙科技有限公司 应用程序的崩溃统计方法、装置、计算机设备及存储介质
CN113110952A (zh) * 2021-04-09 2021-07-13 北京沃东天骏信息技术有限公司 获取应用程序中的sdk异常信息的方法和装置
CN114020504A (zh) * 2021-10-19 2022-02-08 北京五八信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN114546700A (zh) * 2022-02-25 2022-05-27 创优数字科技(广东)有限公司 一种异常日志的数据处理方法、系统及设备

Similar Documents

Publication Publication Date Title
CN109284269B (zh) 异常日志分析方法、装置、存储介质及服务器
CN110647472A (zh) 崩溃信息统计方法、装置、计算机设备及存储介质
CN109240886B (zh) 异常处理方法、装置、计算机设备以及存储介质
US8250543B2 (en) Software tracing
US9612936B2 (en) Correlation of source code with system dump information
EP4099170B1 (en) Method and apparatus of auditing log, electronic device, and medium
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
CN103034575B (zh) 崩溃分析方法和装置
CN111240876B (zh) 微服务的故障定位方法、装置、存储介质及终端
CN103049373B (zh) 一种崩溃的定位方法和装置
CN111625833B (zh) 一种高效的软件程序释放后重用漏洞判定方法和装置
US12021681B2 (en) Communication device, surveillance server, and log collection method
CN112306833A (zh) 应用程序的崩溃统计方法、装置、计算机设备及存储介质
CN110990179B (zh) 一种任务处理方法、装置及设备
CN115185777A (zh) 一种异常检测方法、装置、可读存储介质以及电子设备
CN108111328B (zh) 一种异常处理方法及装置
US8549487B2 (en) Automated identification of redundant method calls
US9009671B2 (en) Crash notification between debuggers
CN112214378A (zh) 数据收集方法、装置、电子设备及存储介质
CN112181479A (zh) 代码文件版本间差异的确定方法、装置及电子设备
CN115705294B (zh) 用于获取函数调用信息的方法、装置、电子设备和介质
US10496524B2 (en) Separating test coverage in software processes using shared memory
US20180275981A1 (en) Determining candidate patches for a computer software
CN111737398A (zh) 文本中的敏感词的检索方法、装置、电子设备及存储介质
CN115396280B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200103

RJ01 Rejection of invention patent application after publication