一种转储文件分析方法、装置和系统的制作方法

文档序号:6489143阅读:210来源:国知局
一种转储文件分析方法、装置和系统的制作方法
【专利摘要】本发明实施方式提出了一种转储(Dump)文件分析方法、装置和系统。方法包括:接收转储文件;调度调试分析引擎对转储文件进行扫描,以获取转储文件分析日志;对转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。应用本发明实施方式之后,实现了针对转储文件的自动分析,提高了转储文件分析效率,可以快速定位和解决软件崩溃(Crash)问题,从而提高软件的稳定性。
【专利说明】一种转储文件分析方法、装置和系统
【技术领域】
[0001]本发明实施方式涉及计算机信息处理【技术领域】,更具体地,涉及一种转储(Dump)文件分析方法、装置和系统。
【背景技术】
[0002]软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。
[0003]现在很多的软件产品为了追求高稳定性,通常在软件崩溃(Crash)时生成并上报Dump文件。Dump文件是进程的内存镜像。在程序Crash时,可以把程序的执行状态通过调试器保存到Dump文件中。软件开发人员通过分析收集到的Dump,可以定位并解决软件崩溃问题。
[0004]目前针对Dump文件的分析的手段一般是通过Visual Studio、WinDbg等调试工具来打开Dump文件,人工通过观察调用栈、寄存器、异常信息来推测可能造成软件Crash的原因。
[0005]然而,这种人工分析Dump文件的方式耗时较久,不利于快速修复软件Crash问题。而且,采用人工分析Dump文件的处理方式还具有分析效率低的缺陷,以及人工分析处理通常会需要大量的培训工作,从而造成分析成本上升。

【发明内容】

[0006]本发明实施方式提出一种Dump文件分析方法,实现对Dump文件的自动分析,从而提高Dump文件分析效率。
[0007]本发明实施方式还提出了一种Dump文件分析装置,实现对Dump文件的自动分析,从而提高Dump文件分析效率。
[0008]本发明实施方式还提出了一种Dump文件分析系统,实现对Dump文件的自动分析,从而提高Dump文件分析效率。
[0009]本发明实施方式的具体方案如下:
[0010]一种转储(Dump)文件分析方法,该方法包括:
[0011]接收转储文件;
[0012]调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;
[0013]对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;
[0014]根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。
[0015]一种转储文件分析装置,该装置包括转储文件接收单元、转储文件分析日志生成单元、崩溃基础特征提取单元和转储文件判定单元,其中:[0016]转储文件接收单元,用于接收转储文件;
[0017]转储文件分析日志生成单元,用于调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;
[0018]崩溃基础特征提取单元,用于对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;
[0019]转储文件判定单元,用于根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。
[0020]一种转储文件分析系统,该系统包括:位于本地端的转储文件发送装置和位于网络侧的转储文件分析装置;其中:
[0021]所述转储文件发送装置,用于采集在本地的程序崩溃(Crash)时所产生的转储文件,并通过与转储文件分析装置的WEB连接向所述转储文件分析装置发送该转储文件;
[0022]转储文件分析装置,用于接收该转储文件,并使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描以获取转储文件分析日志;使能预先生成的特征提取脚本对所述转储文件分析日志进行解析,以提取出崩溃基础特征;使能预先生成的特征分析脚本根据所述崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对所述转储文件进行判定,并将判定结果发送到所述转储文件发送装置。
[0023]从上述技术方案可以看出,在本发明实施方式中:接收转储文件;调度调试分析引擎对转储文件进行扫描,以获取转储文件分析日志;对所述转储文件分析日志进行解析,以从中提取出崩溃(Crash)基础特征;根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。由此可见,应用本发明实施方式之后,实现了针对转储文件的自动分析,从而提高了转储文件分析效率。
[0024]而且,应用本发明实施方式之后,可以快速定位和解决软件Crash问题,从而提高了软件的稳定性。
[0025]不仅与此,通过实现Dump文件的自动分析,还显著降低了专业人员培训费用,从而降低了软件开发成本。
【专利附图】

【附图说明】
[0026]图1为根据本发明的Dump文件分析方法流程图;
[0027]图2为根据本发明实施方式根据Web方式上传Dump文件及分析Dump文件的示意图;
[0028]图3为根据本发明的Dump文件分析装置结构图;
[0029]图4为根据本发明的Dump文件分析装置结构图。
【具体实施方式】
[0030]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0031]在本发明实施方式中,提出了一种自动化的Dump文件分析技术方案。对软件崩溃所产生的Dump文件,调度脚本可以通过命令行等方式调度调试分析引擎进行扫描,得到转储文件分析日志。然后通过特征提取脚本和特征判定脚本,依据特征规则库对转储文件分析日志进行处理,针对Dump文件得到最终的软件Crash判定结果及相关有用信息,从而辅助软件开发者进行修改。
[0032]而且,可以将Crash判定结果及相关有用信息等存入历史Crash数据库,对以后的软件Crash分析识别及规则库的完善起到积累作用。
[0033]示范性地:软件开发者可以通过WEB站点上传需要分析的Dump文件,依据本发明实施方式的Dump文件自动化分析处理后,返回相应结果页面给软件开发者。比如:在结果页面中包含Crash的类型、Crash是否已知、Crash代码作者等相关信息,从而可以辅助软件开发者快递解决软件Crash问题。
[0034]图1为根据本发明的Dump文件分析方法流程图。
[0035]如图1所示,该方法包括:
[0036]步骤101:接收转储(Dump)文件。
[0037]在这里,可以通过多种方式接收由软件崩溃所产生的Dump文件。比如,可以通过WEB方式接收由软件自动发送或者软件开发者人工发送的Dump文件。
[0038]Dump文件是用于调试程序所用,这种文件通常需要由专用工具软件打开(比如:使用WinDbg打开)。
[0039]示范性地,以WINDOWS 7操作系统为实例,当软件系统发生崩溃时,通常有3类Dump文件可以被捕获:
[0040](I)、完全内存Dump文件:当崩溃发生时,将捕获整个物理内存的状态。此类转储文件大小为内存中页面文件大小+IMB的文件头。在Wind0wsNT4操作类型中只支持完全内存转储,这也是WindowsServerSystems的默认设置。
[0041](2)、核心内存Dump文件:当崩溃发生时,核心内存转储只捕获物理内存中内核态的页面文件读/写数据。这只是内核态的转储,并不包括用户态进程的页面。不过,由用户态进程页引起系统崩溃是不大可能的,通常都是由内核态引起。核心内存转储中包括:当前运行进程、线程和被加载的驱动等相关信息。
[0042]核心内存转储文件大小=操作系统内核态内存占用大小+操作系统为驱动程序分配内存的大小。
[0043](3)、小内存Dump文件(Min1-dump):是一个64K的转储文件(64位系统和Windows7里的大小为128K,在Vista中为512K)。它包括:终止代码、参数和被加载的驱动列表。主要信息为崩溃时的当前进程、线程和内核堆。
[0044]以上虽然以WINDOWS 7操作系统为实例对Dump文件的类型进行了示范性说明。本领域技术人员可以意识到,这种罗列仅仅是阐述性的,并不用于对本发明实施方式的保护范围进行限定。
[0045]步骤102:调试分析引擎对Dump文件进行扫描,以得到Dump文件分析日志。
[0046]在这里,可以通过生成调试脚本的具体方式来执行该步骤。比如:可以通过多种程序语言或脚本生成工具来生成调度脚本。
[0047]具体地,调度脚本可以是使用特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。简单地说,调度脚本可以包括一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。调度脚本程序在执行时,由预先设置的解释器,将其一条条文字命令的翻译成机器可识别的指令,并按程序顺序执行。[0048]示范性地,调度脚本以命令行的方式调度调试分析引擎,采用多线程对Dump文件进行扫描,以得到Dump文件分析日志。而且,调试分析引擎具体可以为WinDbg或VisualStudio 等等。
[0049]步骤103:对Dump文件分析日志进行解析,以从中提取出崩溃(Crash)基础特征。
[0050]优选地,可以生成特征提取脚本,然有由该特征提取脚本具体执行该步骤。
[0051]比如:可以通过多种程序语言或脚本生成工具来生成特征提取脚本,而且当调试分析引擎对Dump文件进行扫描得到Dump文件分析日志之后,可以由该特征提取脚本从Dump文件分析日志中提取出Crash基础特征。
[0052]示范性地,特征提取脚本可以根据预先设置的正则表达式,从Dump文件分析日志中提取出Crash基础特征。正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。
[0053]Crash基础特征描述了 Crash的基本属性,通常包括:崩溃所在的模块名;崩溃所在的进程名;异常类型;崩溃所在的函数及文件;由调试分析引擎分析出的可能引发崩溃的原因;崩溃处的符号(Symbol)名;和/或调用堆栈信息,等等。
[0054]示范性地,Crash基础特征包括但是不局限于:
[0055](I) F0LL0WUP_IP:标识Crash所在的函数及文件;
[0056](2) ExceptionCode:标识异常类型。如:c0000005 (Access violation);
[0057](3)PRIMARY_PROBLEM_CLASS:标识 WinDbg 分析出的可能引发 Crash 的原因。如:BAD_INSTRUCTION_PTR,等等;`
[0058](4) PR0CESS_NAME:标识 Crash 所在进程。如:QPlus.exe ;
[0059](5) M0DULE_NAME:标识 Crash 所在模块。如:dockbar ;
[0060](6)SYMB0L_NAME:Crash 处的 symbol。如:dockbar! JointSelector::ClearItems+c ;
[0061](7) STACK_TEXT:详细栈信息(module!class::fuc[....cpp]....)。
[0062]步骤104:特征分析脚本根据Crash基础特征生成Crash辅助特征,并基于Crash基础特征和Crash辅助特征对Dump文件进行判定。
[0063]优选地,可以生成特征分析脚本,然有由该特征分析脚本具体执行该步骤。
[0064]比如:可以通过多种程序语言或脚本生成工具来生成特征分析脚本,而且,该特征分析脚本可以根据Crash基础特征生成Crash辅助特征,并基于Crash基础特征和Crash辅助特征对Dump文件进行判定。
[0065]示范性地,特征规则库可以包括下列特征规则中的至少一个:字符串类型Crash的判定规则;容器类型Crash的判定规则;和/或野指针类型Crash的判定规则。可以根据历史分析经验生成特征规则库,而且特征规则库可以被不断地更新完善。
[0066]比如:对于特征规则库,其中包括的规则可以包括:
[0067](I)字符串类型Crash的判定规则:
[0068]PRIMARY_PROBLEM_CLASS=STATUS_INVALID_PARAM
[0069]SYMB0L_NAME=msvcr80! wcslen>msvcr80!wcscpy_s>msvcr80!strncpy_s.....[0070](2)容器类型Crash的判定规则:
[0071 ] PRIMARY_PROBLEM_CLASS=STATUS_INVALID_PARAM[0072]SYMB0L_NAME=msvcr80!_invalid_parameter_noinfo
[0073](3)野指针类型Crash的判定规则:
[0074]PRIMARY_PROBLEM_CLASS=
[0075]BAD_INSTRUCTION_PTR、INVALID_POINTER_WRITE,
[0076]INVALID_POINTER_READ ;
[0077]Crash辅助特征描述了 Crash的辅助属性,比如Crash作者、Crash哈希、Crash类型是否已知等等。可以基于Crash基础特征确定出Crash辅助特征。
[0078]比如:特征分析脚本可以根据调用堆栈信息获取Crash所在文件;特征分析脚本根据Crash所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_0Wner);特征分析脚本根据Crash处的符号名(SYMB0L_NAME )和主要问题类(PRIMARY_PROBLEM_CLASS),计算Crash哈希(Crash_Hash);和/或特征分析脚本根据Crash哈希,查询历史Crash数据库以判定该Dump文件的Crash类型是否为已知,等等。
[0079]优选地,可以将Dump文件的Crash基础特征和Crash辅助特征保存进历史Crash数据库,并针对历史Crash数据库生成统计报表信息。
[0080]比如:可以将历史Crash数据库的表结构设计为如下所示;其中表1为Crash数据库主表结构;表2为Crash数据库明细表结构。
[0081]表1
[0082]
【权利要求】
1.一种转储(Dump)文件分析方法,其特征在于,该方法包括:
接收转储文件; 调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志; 对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征; 根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。
2.根据权利要求1所述的转储文件分析方法,其特征在于,该方法进一步包括:生成调度脚本、特征提取脚本和特征分析脚本; 所述调度调试分析引擎对所述转储文件进行扫描为:所述调度脚本调度调试分析引擎对所述转储文件进行扫描; 所述对转储文件分析日志进行解析,以提取出崩溃基础特征为:所述特征提取脚本对转储文件分析日志进行解析,以提取出崩溃基础特征; 所述根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定为:所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。
3.根据权利要求1所述的转储文件分析方法,其特征在于,该方法进一步包括: 将所述转储文件的判定结果发送到产生所述转储文件的软件崩溃端,并在所述软件崩溃端显示所述转储文件的判定结果;或 将所述转储文件的判定结果发送到第三方崩溃分析端,并在所述第三方崩溃分析端显示所述转储文件的判定结果。
4.根据权利要求2所述的转储文件分析方法,其特征在于,所述调度脚本调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志包括: 调度脚本以命令行的方式调度调试分析引擎,采用多线程对所述转储文件进行扫描,以获取转储文件分析日志。
5.根据权利要求2所述的转储文件分析方法,其特征在于,该方法包括进一步包括设置正则表达式的步骤; 所述特征提取脚本从所述转储文件分析日志中提取出崩溃(Crash)基础特征包括: 特征提取脚本根据所述正则表达式,从所述转储文件分析日志中提取出崩溃基础特征。
6.根据权利要求2所述的转储文件分析方法,其特征在于,所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征包括: 所述特征分析脚本根据预先设置的特征规则库对所述崩溃基础特征进行特征分析,以生成崩溃辅助特征。
7.根据权利要求6所述的转储文件分析方法,其特征在于,所述特征规则库包括下列特征规则中的至少一个: 字符串类型崩溃的判定规则; 容器类型崩溃的判定规则;和/或 野指针类型崩溃的判定规则。
8.根据权利要求2所述的转储文件分析方法,其特征在于,所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征包括下列处理中的至少一个: 特征分析脚本根据调用堆栈信息获取崩溃所在文件; 特征分析脚本根据所述崩溃所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner); 特征分析脚本根据崩溃处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算崩溃哈希(Crash_Hash);和/或 特征分析脚本根据崩溃哈希,查询历史崩溃数据库以判定该转储文件的崩溃类型是否为已知。
9.根据权利要求1所述的转储文件分析方法,其特征在于,所述接收转储文件为:通过WEB方式接收转储文件; 该方法进一步包括:将所述转储文件的崩溃基础特征和崩溃辅助特征保存进历史崩溃数据库,并针对所述历史崩溃数据库生成统计报表信息。
10.一种转储文件分析装置,其特征在于,该装置包括转储文件接收单元、转储文件分析日志生成单元、崩溃基础特征提取单元和转储文件判定单元,其中: 转储文件接收单元,用于接收转储文件; 转储文件分析日志生成单元,用于调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志; 崩溃基础特征提取单元,用于对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;` 转储文件判定单元,用于根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。
11.根据权利要求10所述的转储文件分析装置,其特征在于, 转储文件分析日志生成单元,用于使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描; 崩溃基础特征提取单元,用于使能预先生成的特征提取脚本对转储文件分析日志进行解析,以提取出崩溃基础特征; 转储文件判定单元,用于使能预先生成的特征分析脚本,根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。
12.根据权利要求10所述的转储文件分析装置,其特征在于, 转储文件判定单元,进一步用于将所述转储文件的判定结果发送到产生所述转储文件的软件崩溃端,并在所述软件崩溃端显示所述转储文件的判定结果;或将所述转储文件的判定结果发送到第三方崩溃分析端,并在所述第三方崩溃分析端显示所述转储文件的判定结果。
13.根据权利要求11所述的转储文件分析装置,其特征在于, 转储文件分析日志生成单元,用于使能调度脚本以命令行的方式调度调试分析引擎,采用多线程对所述转储文件进行扫描,以获取转储文件分析日志。
14.根据权利要求11所述的转储文件分析装置,其特征在于, 崩溃基础特征提取单元,用于使能特征提取脚本根据预先设置的正则表达式,从所述转储文件分析日志中提取出崩溃基础特征。
15.根据权利要求11所述的转储文件分析装置,其特征在于, 崩溃基础特征提取单元,用于使能特征分析脚本根据预先设置的特征规则库对崩溃基础特征进行特征分析,以生成崩溃辅助特征。
16.根据权利要求15所述的转储文件分析装置,其特征在于,特征规则库包括下列特征规则中的至少一个: 字符串类型崩溃的判定规则; 容器类型崩溃的判定规则;和/或 野指针类型崩溃的判定规则。
17.根据权利要求11所述的转储文件分析装置,其特征在于, 崩溃基础特征提取单元,用于使能特征分析脚本根据所述崩溃基础特征生成崩溃辅助特征包括下列处理中的至少一个特征: 分析脚本根据调用堆栈信息获取崩溃所在文件; 特征分析脚本根据所述崩溃所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner); 特征分析脚本根据崩 溃处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算崩溃哈希(Crash_Hash);和/或 特征分析脚本根据崩溃哈希,查询历史崩溃数据库,以判定该转储文件的崩溃类型是否为已知。
18.根据权利要求11所述的转储文件分析装置,其特征在于,进一步包括统计报表信息生成单元,其中: 转储文件接收单元,用于通过WEB方式接收转储文件; 统计报表信息生成单元,用于将所述转储文件的崩溃基础特征和崩溃辅助特征保存进历史崩溃数据库,并针对所述历史崩溃数据库生成统计报表信息。
19.一种转储文件分析系统,其特征在于,该系统包括:位于本地端的转储文件发送装置和位于网络侧的转储文件分析装置;其中: 所述转储文件发送装置,用于采集在本地的程序崩溃(Crash )时所产生的转储文件,并通过与转储文件分析装置的WEB连接向所述转储文件分析装置发送该转储文件; 转储文件分析装置,用于接收该转储文件,并使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描以获取转储文件分析日志;使能预先生成的特征提取脚本对所述转储文件分析日志进行分析,以提取出崩溃基础特征;使能预先生成的特征分析脚本根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定,并将所述判定结果发送到所述转储文件发送装置。
【文档编号】G06F11/36GK103678109SQ201210359077
【公开日】2014年3月26日 申请日期:2012年9月25日 优先权日:2012年9月25日
【发明者】高明 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1