掌桥专利:专业的专利平台
掌桥专利
首页

一种自动化崩溃分析方法及系统

文献发布时间:2024-05-31 01:29:11


一种自动化崩溃分析方法及系统

技术领域

本申请实施例涉及但不限于软件分析技术领域,特别是涉及一种自动化崩溃分析方法及系统。

背景技术

软件崩溃分析技术是一种用于确定和解决软件崩溃问题的方法。当软件发生崩溃时,它可能会导致应用程序无法正常运行或提供预期的功能。为了解决这些问题,软件崩溃分析技术可以帮助开发人员识别崩溃的原因,并提供修复措施。传统软件崩溃分析技术存在如下缺点:

(1)手动分析工作量大:传统的软件崩溃分析通常需要开发人员手动收集、分析和解释崩溃日志和堆栈跟踪信息。这需要大量的时间和精力,特别是在处理大量崩溃报告时,手动分析工作量变得非常繁重。

(2)人为错误可能导致偏差:由于手动分析的主观性,开发人员可能会因为个人经验、偏见或疏忽而产生错误的分析结果。这可能导致对崩溃原因的错误理解,从而延误修复过程或引入新的问题。

(3)缺乏可扩展性:传统的软件崩溃分析通常受限于开发人员的时间和资源。对于大型或复杂的软件系统,手动分析可能无法满足分析的规模和速度要求。这可能导致崩溃问题的滞后解决或无法及时发现和解决重要的问题。

(4)信息整合和共享困难:传统的软件崩溃分析往往缺乏一个集中的信息存储和共享平台。开发人员需要手动整合和管理各种崩溃报告、日志和堆栈跟踪信息,这增加了信息管理的困难,并且可能导致信息的丢失或遗漏。

(5)缺乏实时监控和反馈:传统的软件崩溃分析通常是基于离线收集和分析崩溃数据的方式。这意味着开发人员在崩溃发生后才能获得相关信息,并且无法实时监控和反馈崩溃情况。这可能导致延迟的响应和修复,影响用户体验和软件质量。

如何克服现有技术的上述缺陷,实现针对软件崩溃的准确、高效的分析,这已成为亟需解决的技术问题。

发明内容

针对现有技术中存在的上述问题,本发明提出了一种自动化崩溃分析方法及系统,本申请所采用的技术方案如下:

一种自动化崩溃分析方法,该方法包括:

步骤1、从崩溃数据源收集minidump文件和日志文件;

步骤2、判断所述minidump文件和所述日志文件是否同时存在,若同时存在,则通过minidump_stackwalk对minidump文件和日志文件进行分析;

步骤3、根据minidump文件和日志文件的分析结果生成崩溃报告;

步骤4、将崩溃报告的各个字段分布式存储在存储节点集群中,并创建相应的索引,基于崩溃报告的各个字段,按照预设维度生成可视化图表。

进一步的,该方法还包括:步骤5、通过协作和沟通模块,深入分析软件崩溃的原因并提出解决方案。

进一步的,在步骤2中,对minidump文件进行分析包括:

步骤201、下载进行minidump文件分析所需的符号文件;

步骤202、提取minidump文件中的关键信息,确定崩溃发生的位置和原因;

步骤203、根据minidump文件中的异常类型字段,确定崩溃发生的异常类型;

步骤204、分析minidump文件中的堆栈帧信息,定位问题代码的位置和上下文。

进一步的,在步骤2中,自动化崩溃分析系统将从minidump文件和客户端运行日志中提取的关键信息进行综合分析,通过结合异常类型、堆栈帧和其他附加信息,获得完整的崩溃分析结果。

进一步的,在上述步骤3中,生成崩溃报告,具体包括:

根据日志文件解析崩溃发生时间、操作系统信息、软件版本号以为故障排查和问题分析提供上下文信息;

利用正则表达式,系匹配并提取出崩溃线程的堆栈;

解析minidump_stackwalk输出的堆栈信息,提取出代码所在文件名,代码行数;

生成JSON格式的差异数据报告,基于差异数据报告生成崩溃报告。

进一步的,所述崩溃报告包括崩溃发生的时间、崩溃上报的时间、调用堆栈、代码文件、崩溃点所在的代码行以及用户操作系统和软件版本信息。

一种自动化崩溃分析系统,该系统用于实现上述方法,该系统包括自动化崩溃分析程序模块、存储节点集群、分析看板模块以及协作模块;

所述自动化崩溃分析程序模块,与所述存储节点集群相连,接收来自用户客户端上报的崩溃数据并进行数据分析,将数据分析的结果传输至所述存储节点集群;

存储节点集群,分别与所述自动化崩溃分析程序模块、分析看板模块以及协作模块相连,用于检索和存储软件崩溃信息;

分析看板模块,与所述存储节点集群相连,用于提供用户界面,通过可视化图表和报告,将从所述存储节点集群获取的崩溃分析的结果呈现用户;

协作模块,与所述存储节点集群相连,用于提供崩溃分析结果、解决方案共享,并跟踪解决进度。

进一步的,用户客户端上报的所述崩溃数据为在客户端崩溃时用户客户端生成的minidump文件与日志文件整合形成的压缩包。

进一步的,所述数据分析为对所述压缩包进行minidump文件分析,利用minidump_stackwalk解析minidump文件,输出软件崩溃时的运行参数;

所述运行参数包括函数运行堆栈、操作系统以及软件版本信息。

一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。

通过本申请实施例,可以获得如下技术效果:本申请的技术方案已在通信技术研发部门推广应用,能够有效解决系统崩溃,使得崩溃数量显著下降,用户体验大大提升。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为自动化软件崩溃分析系统的整体架构示意图;

图2为自动化软件崩溃分析方法的流程示意图;

图3为可视化统计示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。

应该理解,在本申请实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到“第一”、“第二”等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

如图1所示,所述自动化软件崩溃分析系统包括自动化崩溃分析程序模块、存储节点集群、分析看板模块以及协作模块;

所述自动化崩溃分析程序模块,与所述存储节点集群相连,接收来自用户客户端上报的崩溃数据并进行数据分析,将数据分析的结果传输至所述存储节点集群;

存储节点集群,分别与所述自动化崩溃分析程序模块、分析看板模块以及协作模块相连,用于检索和存储软件崩溃信息;

分析看板模块,与所述存储节点集群相连,用于提供用户界面,通过可视化图表和报告,将从所述存储节点集群获取的崩溃分析的结果呈现用户;

协作模块,与所述存储节点集群相连,用于提供崩溃分析结果、解决方案共享,并跟踪解决进度。

用户客户端上报的所述崩溃数据为在客户端崩溃时用户客户端生成的minidump文件与客户端日志整合形成的压缩包;

所述数据分析为对所述压缩包进行minidump文件分析,利用minidump_stackwalk解析minidump文件,输出软件崩溃时的运行参数;

所述运行参数包括函数运行堆栈、操作系统以及软件版本信息。

在存储节点集群中,用户通过输入关键字可以检索出日志的详细信息,如操作系统、软件版本、软件崩溃函数;分析看板模块所提供的界面可以提供有关崩溃发生频率、崩溃类型分布以及崩溃相关的代码点等信息,帮助开发人员更好地理解问题并采取相应的修复行动;系统通过设置协作模块为开发团队提供集成的协作功能,使他们能够共享崩溃分析结果、讨论解决方案,并跟踪问题的解决进度,这样的功能可以促进团队合作,加快问题解决的速度。

通过上述自动化软件崩溃分析系统能够实现如下功能:

(1)能实现用户崩溃数据自动化分析:为研发团队提供了一种高效且准确的方式来处理大量的崩溃数据。通过该功能,系统能够自动收集、整理和分析用户崩溃数据,从中提取关键信息,如崩溃发生的频率、崩溃的具体原因和相关的设备和操作系统信息。这种自动化分析的过程大大减轻了研发人员的工作负担,节省了时间和资源;

(2)能实现软件崩溃信息的高效抽取:通过该功能,系统能够智能地解析崩溃日志、错误报告和异常堆栈信息,从中提取出必要的数据,如错误类型、异常代码、触发条件等。软件崩溃信息的高效抽取功能还具备灵活性和可配置性,允许研发团队根据具体需求自定义抽取规则和关键词,以适应不同的崩溃场景和应用类型。通过灵活配置,系统能够准确地捕捉和提取与崩溃相关的关键信息,为后续的分析和处理提供有力支持;

(3)能实现软件崩溃信息的检索:能实现软件崩溃信息的检索的功能,为研发团队提供了一种便捷和高效的方式来查找和检索与崩溃相关的信息。通过该功能,系统能够建立一个全面的崩溃信息数据库,将崩溃事件的关键信息进行索引和存储,包括崩溃函数、发生时间、相关日志等。研发人员可以通过简单的关键词搜索或者高级查询语法来快速定位特定的崩溃事件,从而快速获取相关的信息;

(4)能实现实时可视化看板:实时可视化看板是一项强大的功能,它为研发团队提供了一个直观、实时的展示平台,用于监控和跟踪软件崩溃的状态和进展。通过该功能,研发人员可以以图表、统计数据、进度条等形式,清晰地了解崩溃事件的数量、处理进度、分布情况等重要信息。实时可视化看板的优势在于它能够将复杂的崩溃数据转化为易于理解和分析的可视化图形。研发团队可以通过看板上的实时数据,迅速发现崩溃事件的趋势和模式,识别出最常见的崩溃类型,以便针对性地进行解决方案的制定和优化;

(5)能实现研发人员协作功能:协作功能提供了一个高效、便捷的平台,促进了研发团队的沟通和合作。它能够帮助团队成员协同解决问题、共享知识、提高工作效率,从而推动软件开发的顺利进行和高质量的交付。

图2为自动化软件崩溃分析方法的流程示意图。该分析方法包括如下步骤:

步骤1、从崩溃数据源收集minidump文件和日志文件;

在上述步骤中,minidump文件中包括软件崩溃时的关键信息,例如堆栈跟踪、寄存器状态等。

步骤2、判断所述minidump文件和所述日志文件是否同时存在,若同时存在,则通过minidump_stackwalk对minidump文件和日志文件进行分析;

在上述步骤中,对日志文件进行分析包括:通过日志文件收集崩溃事件发生时的上下文信息,确定崩溃事件发生的时间,并确认追踪问题的时间线和相关事件顺序;所述上下文信息包括操作系统版本、硬件配置、运行时环境。

在对日志文件进行分析的过程中,确定崩溃事件发生的确切时间对于追踪问题的时间线和确定相关事件的顺序非常关键,综合考虑这些附加信息可以提供更全面的崩溃分析。

在上述步骤中,对minidump文件进行分析包括:

步骤201、下载进行minidump文件分析所需的符号文件;

在上述步骤中,符号文件包含全局变量、局部变量、函数入口地址等信息。一般来说,解析minidump文件需要结合符号文件。

步骤202、提取minidump文件中的关键信息,确定崩溃发生的位置和原因;

在上述步骤中,系统解析minidump文件,提取其中的关键信息,如异常类型、崩溃地址、堆栈跟踪等。这些信息有助于确定崩溃的具体原因和位置。

步骤203、根据minidump文件中的异常类型字段,确定崩溃发生的异常类型;

在上述步骤中,系统根据minidump文件中的异常类型字段,确定发生的异常类型,如访问冲突、空指针引用等。这有助于开发人员理解崩溃的本质和特点。

步骤204、分析minidump文件中的堆栈帧信息,定位问题代码的位置和上下文;

在上述步骤中,系统分析minidump文件中的堆栈帧信息,以了解崩溃发生时程序执行的堆栈情况。通过追踪崩溃点附近的堆栈帧,系统可以定位问题代码的位置和上下文。

在步骤2中,系统将从minidump文件和客户端运行日志中提取的关键信息进行综合分析,通过结合异常类型、堆栈帧和其他附加信息,系统能够得出更准确和完整的崩溃分析结果。

步骤3、根据minidump文件和日志文件的分析结果生成崩溃报告;

在上述步骤中,生成崩溃报告,具体包括:

根据日志文件解析崩溃发生时间、操作系统信息、软件版本号以为故障排查和问题分析提供上下文信息;

利用正则表达式,系匹配并提取出崩溃线程的堆栈;

解析minidump_stackwalk输出的堆栈信息,提取出代码所在文件名,代码行数;

生成JSON格式的差异数据报告,基于差异数据报告生成崩溃报告。

崩溃报告包括:崩溃发生的时间,崩溃上报的时间,调用堆栈,代码文件,崩溃点所在的代码行,用户操作系统,软件版本等。

步骤4、将崩溃报告的各个字段分布式存储在存储节点集群中,并创建相应的索引,基于崩溃报告的各个字段,按照预设维度生成可视化图表;

分布式数据库技术能够将数据分散存储在多个节点上,每个节点可以独立处理部分数据,提高系统的并发处理能力和容错性。通过将崩溃报告的各个字段存储在分布式数据库中,可以有效地管理大量的报告数据。每个字段都可以被单独存储和索引,使得对特定字段的查询可以更加快速和高效。此外,分布式数据库还可以提供数据冗余和备份功能,确保数据的可靠性和可用性。创建相应的索引可以进一步优化崩溃报告数据的查询性能。索引是一种数据结构,可以加快对特定字段的搜索操作。通过在关键字段上创建索引,可以减少数据扫描的时间,快速定位到目标数据,提高查询效率。

在上述步骤中,根据数据库的时间、崩溃函数、操作系统等字段,可以作出若干个可视化图表,包括但不限于图3中示出的几种统计图类型:

(1)崩溃数量随时间变化的统计图

如图3所示,从该图表中,研发人员可以了解当前软件的稳定性。通过这个可视化图,研发人员可以查看软件的历史崩溃情况,并根据趋势和模式进行分析,对特定时间段内的崩溃进行深入研究,以便更好地了解崩溃的根本原因并制定相应的解决方案。此外,还可以将崩溃数据与其他关键性能指标进行比较,以便更好地评估软件的整体表现。

(2)各版本崩溃数量随时间变化图

如图3所示,从该图表中展示了各个版本的软件在不同时间段内的崩溃数量随时间变化的情况。通过这个图表,研发人员可以获得关于各个版本的崩溃情况的详细信息,从而更好地了解每个版本的稳定性表现。

(3)崩溃函数占比图

如图3所示,从该图表中研发人员可以了解到崩溃函数的占比。通过观察图表,研发人员可以识别出哪些崩溃函数对整体稳定性产生了最大的影响。这些关键的崩溃函数可能是由于错误的逻辑、内存泄漏、资源竞争等问题所导致。通过深入分析这些崩溃函数,研发人员可以采取针对性的措施来修复和优化代码,从而提高软件的稳定性和可靠性。

(4)各版本崩溃数量图

如图3所示,从该图表中展示了不同软件版本的崩溃数量情况,通过这个图表,研发人员可以了解到每个版本的崩溃数量,并比较不同版本之间的稳定性表现。

步骤5、通过协作和沟通模块,深入分析软件崩溃的原因并提出解决方案;

在该步骤中,研发人员可以通过协作和沟通模块,共同确定负责修复软件崩溃的负责人,并深入分析软件崩溃的原因和提出解决方案。该模块提供了一个集中的平台,使团队成员能够实时交流、共享信息和协同工作,以便快速解决软件崩溃问题。通过该模块,研发人员可以有效地跟踪和记录软件崩溃事件,包括崩溃发生的时间、环境条件和相关日志信息。此外,该模块还支持团队成员之间的实时通知和提醒,以确保及时响应和解决软件崩溃问题。

通过上述方法,能够实现以下功能:

(1)自动化收集并分析软件日志和minidump文件:系统能够自动识别和分类不同类型的崩溃,并提供智能化的修复建议;系统能够帮助开发人员更快地定位和解决问题,加快修复周期;

(2)快速定位软件崩溃代码:本专利可以快速对dump文件进行解析,提供软件崩溃时的函数调用堆栈、函数调用参数和各寄存器值;根据这些信息,研发人员可以快速定位崩溃代码点;

(3)实时监测和警报功能:以实时捕捉软件崩溃事件并发送警报通知开发人员;这种集成的能力使系统能够更快地响应崩溃事件,减少对系统稳定性和用户体验的影响。

(4)全面的错误日志:将崩溃分析系统与应用程序的错误日志集成,以获取更全面的上下文信息;这样的集成可以提供更准确的崩溃分析结果,并帮助开发人员理解崩溃发生的背景和触发条件。

(5)协作和沟通:系统提供协作功能,使开发团队能够共享崩溃分析结果、讨论解决方案,并跟踪问题的解决进度;这促进了团队合作和知识共享,加快了问题解决的速度。

下面结合客户端新版本发布的应用场景对本申请的上述方案进行描述。在客户端新版本发布后,每小时约200个包含崩溃日志和dump文件的压缩包被上传至自动化崩溃分析系统,由该系统实时对上传的文件进行分析,依次执行如下的操作:

(1)启动自动化崩溃分析系统中的监听程序,判断是否发生软件崩溃;

(2)当软件发生崩溃时,崩溃数据会被上传至分析系统指定的服务器文件夹,并自动解压。分析系统会利用minidump_stackwalk技术对崩溃数据进行分析,然后输出详细的崩溃报告到存储模块中;

(3)存储模块将崩溃报告中的各个字段进行存储,并将它们存储到分布式数据库中。该分布式数据库具备高度可扩展性,并且能够处理大量的数据。通过这种分布式的架构确保所处理数据的可靠性和安全性,并在高并发的情况下确保系统的稳定;

(4)可视化模块从数据库中获取数据,并将其转换成易于理解的图表和报告。这些图表和报告可以帮助研发人员更好地了解软件的崩溃情况。例如,他们可以使用时间轴图表来了解软件崩溃的时间分布情况,或者使用崩溃函数占比图来了解造成崩溃的主要函数或模块;

(5)协作模块则负责从数据库中获取数据,并通知相应的研发人员提供解决方案,修改代码。这个模块可以与团队中的其他成员进行通信,并且能够自动分配任务和跟踪解决方案的进展情况。这种协作方式可以帮助团队更好地协作,提高软件的质量和性能。

综上所述,本申请的技术方案能够实现崩溃信息的采集和存储、崩溃信息的分析和分类、崩溃信息的可视化展示以及研发团队协作和沟通。

·崩溃信息的采集和存储:捕获崩溃事件的关键信息,如崩溃类型、发生时间、崩溃日志等,并将其有效地存储在数据库或其他适当的存储介质中。

·崩溃信息的分析和分类:使用工具来分析崩溃信息的模式和特征,以便将其分类为不同的崩溃类型或相关性。

·崩溃信息的可视化展示:使用图表、统计数据等形式将崩溃信息转化为直观、易于理解的可视化图形,以便研发人员能够清晰地了解崩溃事件的数量、分布和处理进展。

·研发团队协作和沟通:提供实时通信、协同编辑、版本控制和文档共享等功能,以促进团队成员之间的高效合作和知识共享。

本申请实施例还提供了一种电子设备。在一示例性的实施方式中,该电子设备包括:一个或多个处理器和存储器,处理器和存储器可以通过总线或者其他方式连接。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序,如上述本申请实施例中的数据处理方法。处理器通过运行存储在存储器中的非暂态软件程序以及程序,从而实现上述本申请实施例中的数据处理方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储执行上述本申请实施例中的数据处理方法所需的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该数据处理装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。实现上述本申请实施例中的数据处理方法所需的非暂态软件程序以及程序存储在存储器中,当被一个或者多个处理器执行时,执行上述本申请实施例中的数据处理方法。

此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行程序,该计算机可执行程序被一个或多个控制处理器执行,可使得上述一个或多个处理器执行上述本申请实施例中的数据处理方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

以上是对本申请的若干实施进行了具体说明,但本申请并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请本质的共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本申请权利要求所限定的范围内。

相关技术
  • 一种监测flock导致客户端崩溃的自动化测试方法
  • Linux下的崩溃文件自动化分析方法及系统
  • 用于对设备的自动化系统进行分析的方法、用于至少部分虚拟地运行设备的自动化系统的模拟器和用于对设备的自动化系统进行分析的系统
技术分类

06120116625504