CN108121651A - 计算机软件崩溃信息的自动分析方法和装置 - Google Patents
计算机软件崩溃信息的自动分析方法和装置 Download PDFInfo
- Publication number
- CN108121651A CN108121651A CN201611086101.0A CN201611086101A CN108121651A CN 108121651 A CN108121651 A CN 108121651A CN 201611086101 A CN201611086101 A CN 201611086101A CN 108121651 A CN108121651 A CN 108121651A
- Authority
- CN
- China
- Prior art keywords
- dump file
- crash info
- parsed
- crash
- collapse
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Abstract
本发明公开了一种计算机软件崩溃信息的自动分析方法和装置,该方法包括:A、分析转储文件并输出分析结果;B、解析所述输出的分析结果,得到崩溃信息;C、对解析过的转储文件进行归类,并且存储归类后的结果。本发明还公开了一种计算机软件崩溃信息的自动分析装置。本发明通过自动调用Debugging Tools for Windows工具包提供的调试器分析崩溃转储文件,获取崩溃信息全面准确;使用崩溃地址和崩溃堆栈对崩溃信息归类,不仅提高了归类准确度,而且大大减少了表中存储的冗余信息。应用本发明,本领域计算人员能够准确地获知崩溃原因,给解决软件故障和优化软件提供了依据。
Description
技术领域
本发明涉及计算机系统维护技术领域,特别是涉及一种计算机软件崩溃信息的自动分析方法和装置。
背景技术
计算机软件在运行过程中如果执行了非法指令就会产生异常,最终造成应用程序崩溃或者系统蓝屏,给软件使用者带来一定的损失。使用操作系统提供的功能可以在应用程序崩溃时生成崩溃转储文件(dump文件),通过分析转储文件可以帮助确认应用程序崩溃的原因,给解决软件故障和优化软件提供依据。
目前已经有一些应用程序实现了自动收集转储文件的功能,能够在应用程序崩溃后自动生成转储文件并且上传到服务器上,由系统维护人员对转储文件进行人工分析,由于人工分析转储文件工作量大且对应用程序的分析和归类不准确,所以亟需提供一种计算机软件崩溃信息的自动分析方法。
发明内容
(一)要解决的技术问题
针对现有计算机系统维护技术中的缺陷,本发明要解决的技术问题是:如何提供一种计算机软件崩溃信息的自动分析方法,能够快速高效地对转储文件中的崩溃信息进行分析和归类,从而准确地获知崩溃原因,给解决软件故障和优化软件提供依据。
(二)技术方案
为解决上述技术问题,提供一种计算机软件崩溃信息的自动分析方法,该自动分析方法包括:
A、分析转储文件并输出分析结果;
B、解析所述输出的分析结果,得到崩溃信息;
C、对解析过的转储文件进行归类,并且存储归类后的结果。
优选地,所述步骤A具体包括:
打开一个转储文件;从所述转储文件中获取崩溃地址、错误号码、崩溃线程,进而获取崩溃线程的堆栈和其他线程的堆栈;输出从所述转储文件中获取的信息。
优选地,步骤C所述的存储归类后的结果具体包括:使用至少包括崩溃地址字段和崩溃堆栈字段中一项的表存储归类后的结果。
优选地,所述步骤C具体包括:
C1、确定表中是否存在和解析出的第一崩溃信息的崩溃地址相同的行,如果存在则结束,如果不存在转到步骤C2;
C2、确定表中是否存在和解析出的第一崩溃信息的崩溃堆栈相同的行,如果存在则结束,如果不存在则转到步骤C3;
C3、确定表中是否存在第二崩溃信息,所述解析出的第一崩溃信息的崩溃堆栈是表中所述第二崩溃信息的崩溃堆栈的一个子集,如果存在则结束,否则把解析出的第一崩溃信息加入到表中。
优选地,所述表中进一步包括操作系统字段和模块版本字段。
为解决上述技术问题,提供一种计算机软件崩溃信息的自动分析装置,该自动分析装置包括:
转储文件分析模块,用于分析转储文件并将分析结果输出到分析结果解析模块;
所述分析结果解析模块,用于解析接收自所述转储文件分析模块的分析结果,得到崩溃信息,并将得到的崩溃信息发送给崩溃原因归类模块;
所述崩溃原因归类模块,用于对解析过的转储文件进行归类,并且存储归类后的结果。
(三)有益效果
本发明提出了提供一种计算机软件崩溃信息的自动分析方法和装置,通过自动调用Debugging Tools for Windows工具包提供的调试器分析崩溃转储文件,获取崩溃信息全面准确;使用崩溃地址和崩溃堆栈对崩溃信息归类,不仅提高了归类准确度,而且大大减少了表中存储的冗余信息。应用本发明,本领域计算人员能够准确地获知崩溃原因,给解决软件故障和优化软件提供了依据。
附图说明
图1是本发明所述计算机软件崩溃信息的自动分析方法的流程图;
图2是本发明方法中对解析过的转储文件归类并且存储归类后的结果的方法流程图;
图3是本发明所述计算机软件崩溃信息的自动分析装置的结构图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明的主要思想为:分析转储文件并输出分析结果;解析所述输出的分析结果,得到分析崩溃原因需要用到的崩溃信息;对解析过的转储文件进行归类,并且存储归类后的结果。
图1是本发明所述计算机软件崩溃信息的自动分析方法的流程图。如图1所示,本发明所述自动分析方法主要包括以下步骤:
步骤A、分析转储文件并输出分析结果。
本步骤中,具体包括:打开一个转储文件;从所述转储文件中获取崩溃地址、错误号码、崩溃线程,进而获取崩溃线程的堆栈和其他线程的堆栈;输出从所述转储文件中获取的上述信息,例如以文本的形式保存。
在实践中,可以调用微软公司的Debugging Tools for Windows工具包提供的调试器来分析转储文件。目前Debugging Tools forWindows工具包提供了4个调试器:CDB、NTSD、KD和WinDbg,并且可能随着版本的不断更新而改变。
调用调试器,输入转储文件(dump文件)的路径和文件名,还可以输入映象文件的路径、符号文件(PDB文件)的路径、源代码路径、命令脚本或保存输出分析结果的文件名中的一个或多个参数。
可以用多种方法输入上述参数,下面以通过命令行输入上述参数为例说明在Windows系统中调用调试器进行存储文件分析的方法,在命令行中参数-z用于指定转储文件路径和文件名;参数-i用于指定映象文件的路径;参数-y用于指定符号文件的路径;参数-srcpath用于指定源代码路径;参数-c用于指定分析命令;参数-cf用于指定分析命令脚本文件;参数-logo或-loga用于指定分析结果输出文件。
命令行中的分析命令至少包括自动分析命令(!analyze)、显示堆栈命令(k或kb)、退出命令(q)和显示模块命令(1m或lmvm)中的一个。
下面给出一个通过命令行输入参数分析转储文件的例子:
cdb-z“c:\dump\test.dmp”-y“c:\symbols”-c“!analyze-v;lmvmfetion;q”-logo“c:\dump\test.log”
上例表示指定转储文件路径和文件名为“c:\dump\test.dmp”,符号文件的路径为“c:\symbols”,指定分析结果输出文件为“c:\dump\test.log”,指定CDB调试器的调试命令为“!analyze-v;lmvmfetion;q”,调试命令中“!analyze-v”表示输出详细结果,“lmvmfetion”表示输出名称为fetion的模块的详细信息,“q”表示分析结束后自动退出。
步骤B、解析所述输出的分析结果,得到崩溃信息。
步骤A中输出的分析结果一般以文本的形式保存,通过解析相应的文本文件,至少可以得到以下崩溃信息中的一种或多种:(1)发生崩溃的主机的操作系统和版本;(2)崩溃发生的时间;(3)发生崩溃时的寄存器信息;(4)导致崩溃的进程名称;(5)崩溃代码和原因;(6)崩溃地址;(7)导致崩溃的线程堆栈;(8)导致崩溃的线程ID;(9)导致崩溃的模块名称;(10)导致崩溃的模块的路径、版本等信息。
步骤C、对解析过的转储文件进行归类,并且存储归类后的结果。
即将解析过的转储文件按照崩溃原因进行归类,崩溃原因相同的归为一类。
在本步骤中,对崩溃原因相同的转储文件进行归类中,使用表1记录崩溃原因:
表1
在表1中,给出了一个记录崩溃原因的例子;崩溃地址字段中的02840e19代表程序崩溃时执行的指令的地址是0X02840e19。
崩溃堆栈字段中记载了程序崩溃时堆栈中的函数调用关系,堆栈中的每一行代表一条函数调用。第一条(最上面一行)是崩溃时调用的函数,第二条函数调用了第一条函数,第三条函数调用了第二条函数,依此类推。
操作系统字段记录了程序运行所在操作系统的版本号。表中数据表明是WindowsXP2600版本,并且打了Service Pack 3补丁。
模块版本字段记录导致崩溃的模块的版本号,即4.0.2510.0,这个模块一般是一个可执行程序(exe)或动态链接库(dll),。
上述表1中至少包括崩溃地址字段和崩溃堆栈字段中的一项,该表1中还可以包括操作系统字段和模块版本字段等等,这里不一一列举。
图2是本发明方法中对解析过的转储文件归类并且存储归类后的结果的方法流程图。如图2所示,对解析出的崩溃信息A进行归类的步骤包括:
步骤C1、确定表中是否存在和崩溃信息A的崩溃地址相同的行。如果存在则结束,如果不存在转到步骤C2。
步骤C2、确定表中是否存在和崩溃信息A的崩溃堆栈相同的行。如果存在则结束,如果不存在则转到步骤C3。
步骤C3、确定表中是否存在崩溃信息B,所述崩溃信息A的崩溃堆栈是所述崩溃信息B的崩溃堆栈的一个子集,如果存在则结束,否则把崩溃信息A加入到表中。
本发明也包含对上述步骤的简化,即如果仅使用了步骤C1、步骤C2和步骤C3中的某一个步骤或某两个步骤,也包含在本发明之内。
图3是本发明所述计算机软件崩溃信息的自动分析装置的结构图。如图3所示,本发明所述自动分析装置主要包括:转储文件分析模块1;与转储文件分析模块1相连接的分析结果解析模块2;与分析结果解析模块2相连接的崩溃原因归类模块3;所述转储文件分析模块1用于分析转储文件并将分析结果输出到分析结果解析模块2;所述分析结果解析模块2用于解析接收自所述转储文件分析模块1的分析结果,得到分析崩溃原因需要用到的崩溃信息,并将得到的崩溃信息发送给崩溃原因归类模块3;所述崩溃原因归类模块3用于对解析过的转储文件进行归类,并且存储归类后的结果。
由以上实施例可以看出,本发明实施例提出了一种计算机软件崩溃信息的自动分析方法和装置,通过自动调用Debugging Tools forWindows工具包提供的调试器分析崩溃转储文件,获取崩溃信息全面准确;使用崩溃地址和崩溃堆栈对崩溃信息归类,不仅提高了归类准确度,而且大大减少了表中存储的冗余信息。应用本发明,本领域计算人员能够准确地获知崩溃原因,给解决软件故障和优化软件提供了依据。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
Claims (6)
1.一种计算机软件崩溃信息的自动分析方法,其特征在于,该方法包括:
A、分析转储文件并输出分析结果;
B、解析所述输出的分析结果,得到崩溃信息;
C、对解析过的转储文件进行归类,并且存储归类后的结果。
2.如权利要求1所述的自动分析方法,其特征在于,所述步骤A具体包括:
打开一个转储文件;从所述转储文件中获取崩溃地址、错误号码、崩溃线程,进而获取崩溃线程的堆栈和其他线程的堆栈;输出从所述转储文件中获取的信息。
3.如权利要求1所述的自动分析方法,其特征在于,步骤C所述的存储归类后的结果具体包括:使用至少包括崩溃地址字段和崩溃堆栈字段中一项的表存储归类后的结果。
4.如权利要求3所述的自动分析方法,其特征在于,所述步骤C具体包括:
C1、确定表中是否存在和解析出的第一崩溃信息的崩溃地址相同的行,如果存在则结束,如果不存在转到步骤C2;
C2、确定表中是否存在和解析出的第一崩溃信息的崩溃堆栈相同的行,如果存在则结束,如果不存在则转到步骤C3;
C3、确定表中是否存在第二崩溃信息,所述解析出的第一崩溃信息的崩溃堆栈是表中所述第二崩溃信息的崩溃堆栈的一个子集,如果存在则结束,否则把解析出的第一崩溃信息加入到表中。
5.如权利要求3所述的自动分析方法,其特征在于,所述表中进一步包括操作系统字段和模块版本字段。
6.一种计算机软件崩溃信息的自动分析装置,其特征在于,该自动分析装置包括:
转储文件分析模块,用于分析转储文件并将分析结果输出到分析结果解析模块;
所述分析结果解析模块,用于解析接收自所述转储文件分析模块的分析结果,得到崩溃信息,并将得到的崩溃信息发送给崩溃原因归类模块;
所述崩溃原因归类模块,用于对解析过的转储文件进行归类,并且存储归类后的结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611086101.0A CN108121651A (zh) | 2016-11-28 | 2016-11-28 | 计算机软件崩溃信息的自动分析方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611086101.0A CN108121651A (zh) | 2016-11-28 | 2016-11-28 | 计算机软件崩溃信息的自动分析方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108121651A true CN108121651A (zh) | 2018-06-05 |
Family
ID=62226048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611086101.0A Pending CN108121651A (zh) | 2016-11-28 | 2016-11-28 | 计算机软件崩溃信息的自动分析方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108121651A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358975A (zh) * | 2018-09-28 | 2019-02-19 | 珠海市君天电子科技有限公司 | 一种软件运行异常的分析方法、装置、电子设备及存储介质 |
CN109815152A (zh) * | 2019-01-31 | 2019-05-28 | 科大讯飞股份有限公司 | 程序崩溃类型预测方法及系统 |
CN110489345A (zh) * | 2019-08-08 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种崩溃聚合方法、装置、介质和设备 |
CN111258803A (zh) * | 2020-02-12 | 2020-06-09 | 北京字节跳动网络技术有限公司 | 崩溃定位方法、装置及电子设备 |
-
2016
- 2016-11-28 CN CN201611086101.0A patent/CN108121651A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358975A (zh) * | 2018-09-28 | 2019-02-19 | 珠海市君天电子科技有限公司 | 一种软件运行异常的分析方法、装置、电子设备及存储介质 |
CN109815152A (zh) * | 2019-01-31 | 2019-05-28 | 科大讯飞股份有限公司 | 程序崩溃类型预测方法及系统 |
CN110489345A (zh) * | 2019-08-08 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种崩溃聚合方法、装置、介质和设备 |
CN110489345B (zh) * | 2019-08-08 | 2023-08-25 | 北京字节跳动网络技术有限公司 | 一种崩溃聚合方法、装置、介质和设备 |
CN111258803A (zh) * | 2020-02-12 | 2020-06-09 | 北京字节跳动网络技术有限公司 | 崩溃定位方法、装置及电子设备 |
CN111258803B (zh) * | 2020-02-12 | 2023-03-28 | 北京字节跳动网络技术有限公司 | 崩溃定位方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101944059A (zh) | 计算机软件崩溃信息的自动分析方法和装置 | |
CN108121651A (zh) | 计算机软件崩溃信息的自动分析方法和装置 | |
Wong et al. | A crosstab-based statistical method for effective fault localization | |
CN106919612B (zh) | 一种上线结构化查询语言脚本的处理方法及装置 | |
US9235493B2 (en) | System and method for peer-based code quality analysis reporting | |
US9454467B2 (en) | Method and apparatus for mining test coverage data | |
CN100561445C (zh) | 一种根据程序内容自动生成测试数据集的方法和装置 | |
US11449488B2 (en) | System and method for processing logs | |
US20090319833A1 (en) | Software Quality Assessment based on Semantic Similarities | |
US11347619B2 (en) | Log record analysis based on log record templates | |
US9734042B1 (en) | System, method, and computer program for automated parameterized software testing | |
US10613969B2 (en) | Code coverage module with testing function identifier | |
CN110543422A (zh) | 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 | |
KR20160025426A (ko) | 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체 | |
CN109857637A (zh) | 一种基于注解的Java语言方法覆盖率和方法输入输出统计方法及装置 | |
CN111966587A (zh) | 数据采集方法、装置和设备 | |
JP2010256997A (ja) | フィールドトラブルのエラー再現システム、エラー再現調査方法およびシナリオ実行プログラム | |
CN108427645A (zh) | 无命令行接口自动测试平台中实现无人值守的方法及系统 | |
US9165007B2 (en) | Log message optimization to ignore or identify redundant log messages | |
CN107885648B (zh) | 一种生成测试报告的方法和装置 | |
CN110633199A (zh) | 用于支持智能合约的区块链的测试装置、方法及介质 | |
US20070159643A1 (en) | Automated analysis tasks of complex computer system | |
CN105243022B (zh) | 主机应用软件系统的性能数据分析方法及装置 | |
CN113110952A (zh) | 获取应用程序中的sdk异常信息的方法和装置 | |
CN113849484A (zh) | 一种大数据组件升级方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180605 |