著录项信息
专利名称 | 一种转储文件分析方法、装置和系统 |
申请号 | CN201210359077.9 | 申请日期 | 2012-09-25 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2014-03-26 | 公开/公告号 | CN103678109A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/36 | IPC分类号 | G;0;6;F;1;1;/;3;6查看分类表>
|
申请人 | 腾讯科技(深圳)有限公司 | 申请人地址 | 广东省深圳市南山区高新区科技中一路腾讯大厦35层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 腾讯科技(深圳)有限公司,腾讯云计算(北京)有限责任公司 | 当前权利人 | 腾讯科技(深圳)有限公司,腾讯云计算(北京)有限责任公司 |
发明人 | 高明 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 张驰;宋志强 |
摘要
本发明实施方式提出了一种转储(Dump)文件分析方法、装置和系统。方法包括:接收转储文件;调度调试分析引擎对转储文件进行扫描,以获取转储文件分析日志;对转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。应用本发明实施方式之后,实现了针对转储文件的自动分析,提高了转储文件分析效率,可以快速定位和解决软件崩溃(Crash)问题,从而提高软件的稳定性。
1.一种转储(Dump)文件分析方法,其特征在于,该方法包括:
接收转储文件;
调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;
对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;
根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定;
该方法进一步包括:生成调度脚本、特征提取脚本和特征分析脚本;
所述调度调试分析引擎对所述转储文件进行扫描为:所述调度脚本调度调试分析引擎对所述转储文件进行扫描;所述对转储文件分析日志进行解析,以提取出崩溃基础特征为:
所述特征提取脚本对转储文件分析日志进行解析,以提取出崩溃基础特征;所述根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定为:所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定;
所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征包括下列处理中的至少一个:
特征分析脚本根据调用堆栈信息获取崩溃所在文件;
特征分析脚本根据所述崩溃所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner);
特征分析脚本根据崩溃处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算崩溃哈希(Crash_Hash);和/或
特征分析脚本根据崩溃哈希,查询历史崩溃数据库以判定该转储文件的崩溃类型是否为已知。
2.根据权利要求1所述的转储文件分析方法,其特征在于,该方法进一步包括:
将所述转储文件的判定结果发送到产生所述转储文件的软件崩溃端,并在所述软件崩溃端显示所述转储文件的判定结果;或
将所述转储文件的判定结果发送到第三方崩溃分析端,并在所述第三方崩溃分析端显示所述转储文件的判定结果。
3.根据权利要求1所述的转储文件分析方法,其特征在于,所述调度脚本调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志包括:
调度脚本以命令行的方式调度调试分析引擎,采用多线程对所述转储文件进行扫描,以获取转储文件分析日志。
4.根据权利要求1所述的转储文件分析方法,其特征在于,该方法包括进一步包括设置正则表达式的步骤;
所述特征提取脚本从所述转储文件分析日志中提取出崩溃(Crash)基础特征包括:
特征提取脚本根据所述正则表达式,从所述转储文件分析日志中提取出崩溃基础特征。
5.根据权利要求1所述的转储文件分析方法,其特征在于,所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征包括:
所述特征分析脚本根据预先设置的特征规则库对所述崩溃基础特征进行特征分析,以生成崩溃辅助特征。
6.根据权利要求5所述的转储文件分析方法,其特征在于,所述特征规则库包括下列特征规则中的至少一个:
字符串类型崩溃的判定规则;
容器类型崩溃的判定规则;和/或
野指针类型崩溃的判定规则。
7.根据权利要求1所述的转储文件分析方法,其特征在于,所述接收转储文件为:通过WEB方式接收转储文件;
该方法进一步包括:将所述转储文件的崩溃基础特征和崩溃辅助特征保存进历史崩溃数据库,并针对所述历史崩溃数据库生成统计报表信息。
8.一种转储文件分析装置,其特征在于,该装置包括转储文件接收单元、转储文件分析日志生成单元、崩溃基础特征提取单元和转储文件判定单元,其中:
转储文件接收单元,用于接收转储文件;
转储文件分析日志生成单元,用于调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志,包括:使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描;
崩溃基础特征提取单元,用于对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征,包括:使能预先生成的特征提取脚本对转储文件分析日志进行解析,以提取出崩溃基础特征;
转储文件判定单元,用于根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定,包括:使能预先生成的特征分析脚本,根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定;
所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征包括下列处理中的至少一个:
特征分析脚本根据调用堆栈信息获取崩溃所在文件;
特征分析脚本根据所述崩溃所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner);
特征分析脚本根据崩溃处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算崩溃哈希(Crash_Hash);和/或
特征分析脚本根据崩溃哈希,查询历史崩溃数据库以判定该转储文件的崩溃类型是否为已知。
9.根据权利要求8所述的转储文件分析装置,其特征在于,
转储文件判定单元,进一步用于将所述转储文件的判定结果发送到产生所述转储文件的软件崩溃端,并在所述软件崩溃端显示所述转储文件的判定结果;或将所述转储文件的判定结果发送到第三方崩溃分析端,并在所述第三方崩溃分析端显示所述转储文件的判定结果。
10.根据权利要求8所述的转储文件分析装置,其特征在于,
转储文件分析日志生成单元,用于使能调度脚本以命令行的方式调度调试分析引擎,采用多线程对所述转储文件进行扫描,以获取转储文件分析日志。
11.根据权利要求8所述的转储文件分析装置,其特征在于,
崩溃基础特征提取单元,用于使能特征提取脚本根据预先设置的正则表达式,从所述转储文件分析日志中提取出崩溃基础特征。
12.根据权利要求8所述的转储文件分析装置,其特征在于,
崩溃基础特征提取单元,用于使能特征分析脚本根据预先设置的特征规则库对崩溃基础特征进行特征分析,以生成崩溃辅助特征。
13.根据权利要求12所述的转储文件分析装置,其特征在于,特征规则库包括下列特征规则中的至少一个:
字符串类型崩溃的判定规则;
容器类型崩溃的判定规则;和/或
野指针类型崩溃的判定规则。
14.根据权利要求8所述的转储文件分析装置,其特征在于,进一步包括统计报表信息生成单元,其中:
转储文件接收单元,用于通过WEB方式接收转储文件;
统计报表信息生成单元,用于将所述转储文件的崩溃基础特征和崩溃辅助特征保存进历史崩溃数据库,并针对所述历史崩溃数据库生成统计报表信息。
15.一种转储文件分析系统,其特征在于,该系统包括:位于本地端的转储文件发送装置和位于网络侧的转储文件分析装置;其中:
所述转储文件发送装置,用于采集在本地的程序崩溃(Crash)时所产生的转储文件,并通过与转储文件分析装置的WEB连接向所述转储文件分析装置发送该转储文件;
转储文件分析装置,用于接收该转储文件,并使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描以获取转储文件分析日志;使能预先生成的特征提取脚本对所述转储文件分析日志进行分析,以提取出崩溃基础特征;使能预先生成的特征分析脚本根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定,并将所述判定结果发送到所述转储文件发送装置;
所述特征分析脚本根据崩溃基础特征生成崩溃辅助特征包括下列处理中的至少一个:
特征分析脚本根据调用堆栈信息获取崩溃所在文件;
特征分析脚本根据所述崩溃所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner);
特征分析脚本根据崩溃处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算崩溃哈希(Crash_Hash);和/或
特征分析脚本根据崩溃哈希,查询历史崩溃数据库以判定该转储文件的崩溃类型是否为已知。
一种转储文件分析方法、装置和系统\n技术领域\n[0001] 本发明实施方式涉及计算机信息处理技术领域,更具体地,涉及一种转储(Dump)文件分析方法、装置和系统。\n背景技术\n[0002] 软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。\n[0003] 现在很多的软件产品为了追求高稳定性,通常在软件崩溃(Crash)时生成并上报Dump文件。Dump文件是进程的内存镜像。在程序Crash时,可以把程序的执行状态通过调试器保存到Dump文件中。软件开发人员通过分析收集到的Dump,可以定位并解决软件崩溃问题。\n[0004] 目前针对Dump文件的分析的手段一般是通过Visual Studio、WinDbg等调试工具来打开Dump文件,人工通过观察调用栈、寄存器、异常信息来推测可能造成软件Crash的原因。\n[0005] 然而,这种人工分析Dump文件的方式耗时较久,不利于快速修复软件Crash问题。\n而且,采用人工分析Dump文件的处理方式还具有分析效率低的缺陷,以及人工分析处理通常会需要大量的培训工作,从而造成分析成本上升。\n发明内容\n[0006] 本发明实施方式提出一种Dump文件分析方法,实现对Dump文件的自动分析,从而提高Dump文件分析效率。\n[0007] 本发明实施方式还提出了一种Dump文件分析装置,实现对Dump文件的自动分析,从而提高Dump文件分析效率。\n[0008] 本发明实施方式还提出了一种Dump文件分析系统,实现对Dump文件的自动分析,从而提高Dump文件分析效率。\n[0009] 本发明实施方式的具体方案如下:\n[0010] 一种转储(Dump)文件分析方法,该方法包括:\n[0011] 接收转储文件;\n[0012] 调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;\n[0013] 对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;\n[0014] 根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。\n[0015] 一种转储文件分析装置,该装置包括转储文件接收单元、转储文件分析日志生成单元、崩溃基础特征提取单元和转储文件判定单元,其中:\n[0016] 转储文件接收单元,用于接收转储文件;\n[0017] 转储文件分析日志生成单元,用于调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;\n[0018] 崩溃基础特征提取单元,用于对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;\n[0019] 转储文件判定单元,用于根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。\n[0020] 一种转储文件分析系统,该系统包括:位于本地端的转储文件发送装置和位于网络侧的转储文件分析装置;其中:\n[0021] 所述转储文件发送装置,用于采集在本地的程序崩溃(Crash)时所产生的转储文件,并通过与转储文件分析装置的WEB连接向所述转储文件分析装置发送该转储文件;\n[0022] 转储文件分析装置,用于接收该转储文件,并使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描以获取转储文件分析日志;使能预先生成的特征提取脚本对所述转储文件分析日志进行解析,以提取出崩溃基础特征;使能预先生成的特征分析脚本根据所述崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对所述转储文件进行判定,并将判定结果发送到所述转储文件发送装置。\n[0023] 从上述技术方案可以看出,在本发明实施方式中:接收转储文件;调度调试分析引擎对转储文件进行扫描,以获取转储文件分析日志;对所述转储文件分析日志进行解析,以从中提取出崩溃(Crash)基础特征;根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。由此可见,应用本发明实施方式之后,实现了针对转储文件的自动分析,从而提高了转储文件分析效率。\n[0024] 而且,应用本发明实施方式之后,可以快速定位和解决软件Crash问题,从而提高了软件的稳定性。\n[0025] 不仅与此,通过实现Dump文件的自动分析,还显著降低了专业人员培训费用,从而降低了软件开发成本。\n附图说明\n[0026] 图1为根据本发明的Dump文件分析方法流程图;\n[0027] 图2为根据本发明实施方式根据Web方式上传Dump文件及分析Dump文件的示意图;\n[0028] 图3为根据本发明的Dump文件分析装置结构图;\n[0029] 图4为根据本发明的Dump文件分析装置结构图。\n具体实施方式\n[0030] 为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。\n[0031] 在本发明实施方式中,提出了一种自动化的Dump文件分析技术方案。对软件崩溃所产生的Dump文件,调度脚本可以通过命令行等方式调度调试分析引擎进行扫描,得到转储文件分析日志。然后通过特征提取脚本和特征判定脚本,依据特征规则库对转储文件分析日志进行处理,针对Dump文件得到最终的软件Crash判定结果及相关有用信息,从而辅助软件开发者进行修改。\n[0032] 而且,可以将Crash判定结果及相关有用信息等存入历史Crash数据库,对以后的软件Crash分析识别及规则库的完善起到积累作用。\n[0033] 示范性地:软件开发者可以通过WEB站点上传需要分析的Dump文件,依据本发明实施方式的Dump文件自动化分析处理后,返回相应结果页面给软件开发者。比如:在结果页面中包含Crash的类型、Crash是否已知、Crash代码作者等相关信息,从而可以辅助软件开发者快递解决软件Crash问题。\n[0034] 图1为根据本发明的Dump文件分析方法流程图。\n[0035] 如图1所示,该方法包括:\n[0036] 步骤101:接收转储(Dump)文件。\n[0037] 在这里,可以通过多种方式接收由软件崩溃所产生的Dump文件。比如,可以通过WEB方式接收由软件自动发送或者软件开发者人工发送的Dump文件。\n[0038] Dump文件是用于调试程序所用,这种文件通常需要由专用工具软件打开(比如:使用WinDbg打开)。\n[0039] 示范性地,以WINDOWS 7操作系统为实例,当软件系统发生崩溃时,通常有3类Dump文件可以被捕获:\n[0040] (1)、完全内存Dump文件:当崩溃发生时,将捕获整个物理内存的状态。此类转储文件大小为内存中页面文件大小+1MB的文件头。在WindowsNT4操作类型中只支持完全内存转储,这也是WindowsServerSystems的默认设置。\n[0041] (2)、核心内存Dump文件:当崩溃发生时,核心内存转储只捕获物理内存中内核态的页面文件读/写数据。这只是内核态的转储,并不包括用户态进程的页面。不过,由用户态进程页引起系统崩溃是不大可能的,通常都是由内核态引起。核心内存转储中包括:当前运行进程、线程和被加载的驱动等相关信息。\n[0042] 核心内存转储文件大小=操作系统内核态内存占用大小+操作系统为驱动程序分配内存的大小。\n[0043] (3)、小内存Dump文件(Mini-dump):是一个64K的转储文件(64位系统和Windows 7里的大小为128K,在Vista中为512K)。它包括:终止代码、参数和被加载的驱动列表。主要信息为崩溃时的当前进程、线程和内核堆。\n[0044] 以上虽然以WINDOWS 7操作系统为实例对Dump文件的类型进行了示范性说明。本领域技术人员可以意识到,这种罗列仅仅是阐述性的,并不用于对本发明实施方式的保护范围进行限定。\n[0045] 步骤102:调试分析引擎对Dump文件进行扫描,以得到Dump文件分析日志。\n[0046] 在这里,可以通过生成调试脚本的具体方式来执行该步骤。比如:可以通过多种程序语言或脚本生成工具来生成调度脚本。\n[0047] 具体地,调度脚本可以是使用特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。简单地说,调度脚本可以包括一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。调度脚本程序在执行时,由预先设置的解释器,将其一条条文字命令的翻译成机器可识别的指令,并按程序顺序执行。\n[0048] 示范性地,调度脚本以命令行的方式调度调试分析引擎,采用多线程对Dump文件进行扫描,以得到Dump文件分析日志。而且,调试分析引擎具体可以为WinDbg或Visual Studio等等。\n[0049] 步骤103:对Dump文件分析日志进行解析,以从中提取出崩溃(Crash)基础特征。\n[0050] 优选地,可以生成特征提取脚本,然有由该特征提取脚本具体执行该步骤。\n[0051] 比如:可以通过多种程序语言或脚本生成工具来生成特征提取脚本,而且当调试分析引擎对Dump文件进行扫描得到Dump文件分析日志之后,可以由该特征提取脚本从Dump文件分析日志中提取出Crash基础特征。\n[0052] 示范性地,特征提取脚本可以根据预先设置的正则表达式,从Dump文件分析日志中提取出Crash基础特征。正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。\n[0053] Crash基础特征描述了Crash的基本属性,通常包括:崩溃所在的模块名;崩溃所在的进程名;异常类型;崩溃所在的函数及文件;由调试分析引擎分析出的可能引发崩溃的原因;崩溃处的符号(Symbol)名;和/或调用堆栈信息,等等。\n[0054] 示范性地,Crash基础特征包括但是不局限于:\n[0055] (1)FOLLOWUP_IP:标识Crash所在的函数及文件;\n[0056] (2)ExceptionCode:标识异常类型。如:c0000005(Access violation);\n[0057] (3)PRIMARY_PROBLEM_CLASS:标识WinDbg分析出的可能引发Crash的原因。如:\nBAD_INSTRUCTION_PTR,等等;\n[0058] (4)PROCESS_NAME:标识Crash所在进程。如:QPlus.exe;\n[0059] (5)MODULE_NAME:标识Crash所在模块。如:dockbar;\n[0060] (6)SYMBOL_NAME:Crash处的symbol。如:dockbar!JointSelector::ClearItems+c;\n[0061] (7)STACK_TEXT:详细栈信息(module!class::fuc[....cpp]....)。\n[0062] 步骤104:特征分析脚本根据Crash基础特征生成Crash辅助特征,并基于Crash基础特征和Crash辅助特征对Dump文件进行判定。\n[0063] 优选地,可以生成特征分析脚本,然有由该特征分析脚本具体执行该步骤。\n[0064] 比如:可以通过多种程序语言或脚本生成工具来生成特征分析脚本,而且,该特征分析脚本可以根据Crash基础特征生成Crash辅助特征,并基于Crash基础特征和Crash辅助特征对Dump文件进行判定。\n[0065] 示范性地,特征规则库可以包括下列特征规则中的至少一个:字符串类型Crash的判定规则;容器类型Crash的判定规则;和/或野指针类型Crash的判定规则。可以根据历史分析经验生成特征规则库,而且特征规则库可以被不断地更新完善。\n[0066] 比如:对于特征规则库,其中包括的规则可以包括:\n[0067] (1)字符串类型Crash的判定规则:\n[0068] PRIMARY_PROBLEM_CLASS=STATUS_INVALID_PARAM\n[0069] SYMBOL_NAME=msvcr80!wcslen、msvcr80!wcscpy_s、msvcr80!strncpy_s.....[0070] (2)容器类型Crash的判定规则:\n[0071] PRIMARY_PROBLEM_CLASS=STATUS_INVALID_PARAM\n[0072] SYMBOL_NAME=msvcr80!_invalid_parameter_noinfo\n[0073] (3)野指针类型Crash的判定规则:\n[0074] PRIMARY_PROBLEM_CLASS=\n[0075] BAD_INSTRUCTION_PTR、INVALID_POINTER_WRITE、\n[0076] INVALID_POINTER_READ;\n[0077] Crash辅助特征描述了Crash的辅助属性,比如Crash作者、Crash哈希、Crash类型是否已知等等。可以基于Crash基础特征确定出Crash辅助特征。\n[0078] 比如:特征分析脚本可以根据调用堆栈信息获取Crash所在文件;特征分析脚本根据Crash所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner);特征分析脚本根据Crash处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算Crash哈希(Crash_Hash);和/或特征分析脚本根据Crash哈希,查询历史Crash数据库以判定该Dump文件的Crash类型是否为已知,等等。\n[0079] 优选地,可以将Dump文件的Crash基础特征和Crash辅助特征保存进历史Crash数据库,并针对历史Crash数据库生成统计报表信息。\n[0080] 比如:可以将历史Crash数据库的表结构设计为如下所示;其中表1为Crash数据库主表结构;表2为Crash数据库明细表结构。\n[0081] 表1\n[0082]\n[0083] 表2\n[0084]\n[0085] 示范性地,在历史Crash数据库中,主表和明细表通过Crash_Hash连接。Crash_Hash唯一标识同一种Crash,不同的Dump文件可能对应同一个Crash_Hash。通过计算Crash_Hash,可以区分出某个Dump文件对应的Crash是否已知,从而避免重复工作。\n[0086] Crash_Hash的计算公式如下所示:\n[0087] Crash_Hash=MD5(MAIN_SYMBOL_NAME+SUB_SYMBOL_NAME+PRIMARY_PROBLEM_CLASS)\n[0088] 可以由特征分析脚本取得的Crash_Src(Crash所在文件),通过查询SVN代码服务器,可以获取造成Crash的代码作者(Crash_Owner)。在历史Crash数据库完整记录了某一次Crash相关的所有信息,通过这些信息,既可以归纳完善特征规则库,又可以生成统计报表信息,使软件稳定性的相关运营变得轻松。\n[0089] 基于上述详细分析,可以通过多种方式实施本发明实施方式的技术方案。比如可以在网络侧实施本发明实施方式的Dump文件自动分析方案,而将软件开发现场产生的Dump文件通过Web的方式上传到网络侧,再在网络侧针对该Dump文件执行自动分析,从而可以统一为分散在现场的软件开发者提供Dump文件自动分析服务。\n[0090] 在一个实施方式中,可以将转储文件的判定结果发送到产生转储文件的软件崩溃端,并在该软件崩溃端显示所述转储文件的判定结果;或将转储文件的判定结果发送到第三方崩溃分析端,并在所述第三方崩溃分析端显示所述转储文件的判定结果。\n[0091] 当将转储文件的判定结果发送到产生转储文件的软件崩溃端时,可以辅助软件崩溃端快速寻找到软件崩溃的现场、原因或提供相应辅助信息;当将转储文件的判定结果发送到第三方崩溃分析端时,也有助于该第三方崩溃分析端对软件崩溃的相关信息进行综合分析。\n[0092] 以上虽然示范性地列举出特征规则库中的具体规则以及辅助Crash特征的示范性实例,本领域技术人员可以意识到,这种罗列仅仅是阐述性的,并不用于限定本发明实施方式的保护范围。\n[0093] 以上虽然具体罗列了通过调度脚本、特征提取脚本和特征分析脚本的具体形式来执行本发明实施方式。本领域技术人员可以意识到,这种罗列仅是示范性的,并不用于限定本发明实施方式。比如,还可以预先生成各种格式的可执行文件或批处理命令等方式来执行本发明实施方式,本发明实施方式对于执行方式并无任何约束性限定。\n[0094] 比如:图2为根据本发明实施方式根据Web方式上传Dump文件及分析Dump文件的示意图。\n[0095] 由图2可见,软件开发者可以通过WEB站点上传需要分析的Dump文件到位于网络侧的Crash自动化分析系统。在Dump文件进入Crash自动化分析系统的数据库之前,Crash自动化分析系统可以触发WinDbg等调试分析引擎进行扫描,生成详细分析日志。\n[0096] Crash自动化分析系统触发特征提取脚本提取Crash的基础特征;然后Crash自动化分析系统触发特征分析脚本依据特征规则库,对提取的Crash特征进行分析和识别,并结合查询历史Crash数据库以得出判定结果并更新历史Crash数据库。最后,Crash自动化分析系统返回分析结果页面给软件开发者,然后管理员可以通过历史Crash数据库生成统计报表信息。\n[0097] 基于上述详细分析,本发明实施方式还提出了一种Dump文件分析装置。\n[0098] 图3为根据本发明实施方式的Dump文件分析装置的结构示意图。\n[0099] 如图3所示,该装置包括:转储文件接收单元301、转储文件分析日志生成单元302、崩溃基础特征提取单元303和转储文件判定单元304。其中:\n[0100] 转储文件接收单元301,用于接收转储文件;\n[0101] 转储文件分析日志生成单元302,用于调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;\n[0102] 崩溃基础特征提取单元303,用于对所述转储文件分析日志进行解析,以提取出崩溃(Crash)基础特征;\n[0103] 转储文件判定单元304,用于根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。\n[0104] 在一个实施方式中,转储文件分析日志生成单元301,用于使能预先生成的调度脚本调度调试分析引擎对所述转储文件进行扫描;\n[0105] 崩溃基础特征提取单元302,用于使能预先生成的特征提取脚本对转储文件分析日志进行解析,以提取出崩溃基础特征;\n[0106] 转储文件判定单元303,用于使能预先生成的特征分析脚本,根据崩溃基础特征生成崩溃辅助特征,并基于崩溃基础特征和崩溃辅助特征对转储文件进行判定。\n[0107] 在一个实施方式中,转储文件分析日志生成单元302,用于使能调度脚本以命令行的方式调度调试分析引擎,采用多线程对所述转储文件进行扫描,以获取转储文件分析日志。\n[0108] 在一个实施方式中,崩溃基础特征提取单元303,用于使能特征提取脚本根据预先设置的正则表达式,从转储文件分析日志中提取出崩溃基础特征。\n[0109] 优选地,崩溃基础特征提取单元303,用于使能特征提取脚本根据正则表达式,从转储文件分析日志中提取出以下崩溃基础特征中的至少一个:崩溃所在的模块名;崩溃所在的进程名;异常类型;崩溃所在的函数及文件;由调试分析引擎分析出的可能引发崩溃的原因;崩溃处的符号(Symbol)名;和/或调用堆栈信息,等等。\n[0110] 优选地,崩溃基础特征提取单元303,用于使能特征分析脚本根据预先设置的特征规则库对崩溃基础特征进行特征分析,以生成崩溃辅助特征。特征规则库包括下列特征规则中的至少一个:字符串类型崩溃的判定规则;容器类型崩溃的判定规则;和/或野指针类型崩溃的判定规则。\n[0111] 具体地,崩溃基础特征提取单元301,用于使能特征分析脚本根据所述崩溃基础特征生成崩溃辅助特征包括下列处理中的至少一个特征:\n[0112] 分析脚本根据调用堆栈信息获取崩溃所在文件;\n[0113] 特征分析脚本根据所述崩溃所在文件,查询版本管理(SVN)服务器以得到崩溃代码作者(Crash_Owner);\n[0114] 特征分析脚本根据崩溃处的符号名(SYMBOL_NAME)和主要问题类(PRIMARY_PROBLEM_CLASS),计算崩溃哈希(Crash_Hash);和/或\n[0115] 特征分析脚本根据崩溃哈希,查询历史崩溃数据库,以判定该转储文件的崩溃类型是否为已知。\n[0116] 在一个实施方式中,进一步包括统计报表信息生成单元305。其中:\n[0117] 转储文件接收单元301,用于通过WEB方式接收转储文件;\n[0118] 统计报表信息生成单元305,用于将所述转储文件的崩溃基础特征和崩溃辅助特征保存进历史崩溃数据库,并针对所述历史崩溃数据库生成统计报表信息。\n[0119] 优选地,转储文件判定单元303,进一步用于将所述转储文件的判定结果发送到产生所述转储文件的软件崩溃端,并在所述软件崩溃端显示所述转储文件的判定结果;或将所述转储文件的判定结果发送到第三方崩溃分析端,并在所述第三方崩溃分析端显示所述转储文件的判定结果。\n[0120] 基于上述详细分析,本发明实施方式还提出了一种转储文件分析系统。\n[0121] 图4为根据本发明实施方式的Dump文件分析系统的结构图。由图4可见,该Dump文件分析系统包括:位于本地端的转储文件发送装置401和位于网络侧的转储文件分析装置\n402;其中:\n[0122] 转储文件发送装置401,用于采集在本地的程序崩溃(Crash)所产生的Dump文件,并通过与转储文件分析装置的WEB连接向转储文件分析装置发送该Dump文件;\n[0123] 转储文件分析装置402,用于接收该Dump文件,并使能预先生成的调度脚本调度调试分析引擎对Dump文件进行扫描以获取转储文件分析日志;使能预先生成的特征提取脚本从所述转储文件分析日志中提取出Crash基础特征;使能预先生成的特征分析脚本根据所述Crash基础特征生成Crash辅助特征,并基于所述Crash基础特征和Crash辅助特征对所述Dump文件进行判定,并将所述判定结果发送到所述转储文件发送装置401。\n[0124] 综上所述,在本发明实施方式中,接收转储文件;调度调试分析引擎对所述转储文件进行扫描,以获取转储文件分析日志;对所述转储文件分析日志进行分析,以提取出崩溃(Crash)基础特征;根据所述崩溃基础特征生成崩溃辅助特征,并基于所述崩溃基础特征和崩溃辅助特征对所述转储文件进行判定。由此可见,应用本发明实施方式之后,实现了针对Dump文件的自动分析,从而提高了Dump文件分析效率。\n[0125] 而且,应用本发明实施方式之后,可以快速定位和解决软件Crash问题,从而提高了软件的稳定性。\n[0126] 不仅与此,通过实现Dump文件的自动分析,还显著降低了专业人员培训费用,从而降低了软件开发成本。\n[0127] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2019-08-27
专利权的转移
登记生效日: 2019.08.08
专利权人由腾讯科技(深圳)有限公司变更为腾讯科技(深圳)有限公司
地址由518044 广东省深圳市福田区振兴路赛格科技园2栋东403室变更为518057 广东省深圳市南山区高新区科技中一路腾讯大厦35层
专利权人变更为腾讯云计算(北京)有限责任公司
- 2018-01-05
- 2015-04-22
实质审查的生效
IPC(主分类): G06F 11/36
专利申请号: 201210359077.9
申请日: 2012.09.25
- 2014-03-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-06-02
|
2009-12-25
| | |
2
| |
2011-01-12
|
2010-08-20
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |