CN101770422A - 软件Bug追踪方法及其计算机系统 - Google Patents
软件Bug追踪方法及其计算机系统 Download PDFInfo
- Publication number
- CN101770422A CN101770422A CN200810306676A CN200810306676A CN101770422A CN 101770422 A CN101770422 A CN 101770422A CN 200810306676 A CN200810306676 A CN 200810306676A CN 200810306676 A CN200810306676 A CN 200810306676A CN 101770422 A CN101770422 A CN 101770422A
- Authority
- CN
- China
- Prior art keywords
- software
- function
- takes place
- collapse
- function information
- 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
Images
Abstract
一种软件Bug追踪方法,该方法包括以下步骤:获取正在运行中的软件所包含的函数信息,将其保存到数据库中;当该软件运行中发生崩溃时,激活计算机操作系统中的全局触发器,以读取操作系统在该软件发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址;启动操作系统中的异常处理函数,通过该异常处理函数捕获该软件发生崩溃的原因及时间;将上述崩溃地址与数据库中保存的函数信息进行比较,查找出该软件发生崩溃所对应的函数信息;根据所述软件发生崩溃的原因及时间、查找出的函数信息,生成日志文件。
Description
技术领域
本发明涉及一种软件Bug追踪方法及其计算机系统,尤其涉及一种当软件运行中发生崩溃时的Bug追踪方法及其计算机系统。
背景技术
在软件开发与维护的过程中,经常会出现软件Bug,Bug一词的原意是“臭虫”或“虫子”。这里是指电脑系统或程序中隐藏的一些未被发现的缺陷或问题。在各种类型的Bug中,有的不会对软件造成危害,有的却直接会让软件崩溃,给用户带来无法估量的损失。所述软件崩溃是指软件运行过程中,由于软件的程序错误导致该软件无法正常工作、非正常的退出等状况。虽然可以通过严格的、有组织的软件测试尽可能的保证最终交付的软件产品的稳定性,但依然无法避免Bug的出现。
因此,在软件运行发生崩溃之后,在最短的时间内找出Bug的问题所在并修复,快速恢复软件,使其正常工作,能够极大的减少由于软件崩溃所带来的损失。传统做法中最普遍的方式是采用日志形式,即:对程序本身的处理状况进行记录,将获取的软件Bug信息及文字信息进行记录,生成日志文件。这样维护人员可通过日志文件中记录的信息进行查看,从而找到问题所在。这种方式在很大程度上提升了解决Bug的速度,然而,传统日志的操作方式有以下缺点:1.传统日志依赖程序开发人员的编码:传统日志中所具备的记录Bug原因与位置的功能,依靠的是程序开发人员在可能出现Bug的地方进行异常捕获,从根本上来说,程序开发人员对程序运行的理解直接关系到日志记录的准确与否。要达到准确的捕获Bug,需要开发过程中写入大量的代码,且需要程序维护人员具备完善的异常处理经验。2.无法记录软件运行中发生崩溃的原因:这一点是传统日志的最大缺陷,它只记录程序或框架所定义的错误。但对于已经投入的大型软件来说,若由于程序错误导致该软件运行中发生崩溃,往往只弹出类似0x0040104a的内存地址,之后直接退出正在运行的软件,记录类似于“严重系统错误关闭”等信息,而对于出现崩溃的Bug原因却无法获取,使得用户无法通过日志了解发生崩溃的原因。
发明内容
鉴于以上内容,有必要提供一种软件Bug追踪的计算机系统,其能够准确记录软件运行中导致该软件发生崩溃时的原因,提高了软件维护的效率。
鉴于以上内容,还有必要提供一种软件Bug追踪方法,其能够准确记录软件运行中导致该软件发生崩溃时的原因,提高了软件维护的效率。
一种软件Bug追踪的计算机系统,该计算机系统包括:获取模块,用于获取正在运行中的软件所包含的函数信息,将其保存到数据库中;激活模块,用于当该软件在运行过程中发生崩溃时,激活计算机操作系统中的全局触发器,以读取操作系统在该软件发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址;异常捕获模块,用于启动操作系统中的异常处理函数,通过该异常处理函数捕获该软件发生崩溃的原因及时间;查找模块,用于将上述崩溃地址与数据库中保存的函数信息进行比较,查找出该软件发生崩溃所对应的函数信息;日志生成模块,用于根据所述软件发生崩溃的原因及时间、查找出的函数信息,生成日志文件。
一种软件Bug追踪方法,该方法包括以下步骤:获取正在运行中的软件所包含的函数信息,将其保存到数据库中;当该软件运行中发生崩溃时,激活计算机操作系统中的全局触发器,以读取操作系统在该软件发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址;启动操作系统中的异常处理函数,通过该异常处理函数捕获该软件发生崩溃的原因及时间;将上述崩溃地址与数据库中保存的函数信息进行比较,查找出该软件发生崩溃所对应的函数信息;根据所述软件发生崩溃的原因及时间、查找出的函数信息,生成日志文件。
相较于现有技术,所述的软件Bug追踪方法及其计算机系统,能够准确记录软件运行中导致该软件发生崩溃时的原因,提高了软件维护的效率。
附图说明
图1是本发明软件Bug追踪计算机系统的硬件框架图。
图2是本发明图1中计算机20较佳实施例的功能模块图。
图3是本发明软件Bug追踪方法较佳实施例的流程图。
具体实施方式
如图1所示,是本发明软件Bug追踪的计算机系统的硬件框架图。该计算机系统主要包括计算机20及与该计算机20相连的数据库50。所述计算机20连接有显示器10、键盘30及鼠标40,作为具体操作时的输入、输出设备。
所述数据库50既可以内置于计算机20中,也可以外置于计算机20。该数据库50用于存储计算机20中运行的软件的函数信息。该函数信息存于软件的编译日志文件中,其包括该软件所包含的函数名称、函数对应的内存地址、函数所对应的源代码文件名称及函数在源代码文件中的行数等信息。在本较佳实施例中,所述函数信息的格式(以下列举三条函数信息为例)如下所示:
0001:00000020_main 00401020 f Test.obj Client.cpp 12
0001:00000060 ?Test1@@YAXXZ 00401060 f Test.obj Dome.cpp 65
0001:000000a0_chaesp 004010a0 f LIBCD:chaesp.obj Clip.cpp 23
以第二条为例,其中“?Test1@@YAXXZ”为函数名称,在本较佳实施例中,由于软件是由C++语言进行编写的,因此以问号开头的函数名称都是以C++修饰的名称,“@@YAXXZ”则为区别重载函数而加的后缀,所以“?Test1@@YAXXZ”指的是源代码文件中的“Test1”函数。“00401060”为内存地址。“Test.obj”表示编译时所调用的库函数。“Dome.cpp”表示函数“Test1”所对应的源代码文件名称,“65”表示函数“Test1”在源代码文件“Dome.cpp”中对应的代码行数。
如图2所示,是本发明图1中计算机20较佳实施例的功能模块图。该计算机20包括获取模块210、激活模块211、异常捕获模块212、查找模块213及日志生成模块214。本发明所称的模块是完成一特定功能的计算机程序段,比程序更适合于描述软件在计算机中的执行过程,因此在本发明以下对软件描述中都以模块描述。
所述获取模块210用于获取正在运行中的软件所包含的函数信息,将其保存到数据库50中。
当该软件运行中发生崩溃时,所述激活模块211用于激活计算机20的操作系统中的全局触发器,该全局触发器用于读取操作系统在该软件运行中发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址。具体而言,操作系统包括一种触发机制,若出现程序错误导致该软件在运行中发生崩溃时,激活模块211会启动该触发机制,操作系统通过内部的内存查找函数查找该软件在运行中发生崩溃位置所对应的内存地址,之后弹出一个对话框,显示该内存地址信息。
所述异常捕获模块212用于启动操作系统中的异常处理函数,通过该异常处理函数捕获软件运行中发生崩溃的原因及时间。
所述查找模块213用于将上述崩溃地址与数据库50中保存的函数信息进行比较,查找出该软件运行中发生崩溃所对应的函数信息。具体而言,查找模块213将所述的崩溃地址与数据库50中保存的函数信息中的内存地址进行比较,找出最接近的内存地址。假设所查找到的崩溃地址为“0x00401082”,其中“0x”为崩溃地址的前缀,查找模块213提取该崩溃地址中前缀“0x”后面的信息“00401082”,之后与数据库50中保存的函数信息进行比较,经过比较后确定该崩溃地址与函数信息中的内存地址“00401060”最接近,由此可知,所述软件在发生崩溃时的出错函数为“Test1”,该出错函数所在的源代码文件为“Dome.cpp”,该出错函数“Test1”在源代码文件中的行数为第65行。
所述日志生成模块214用于根据所述软件运行中发生崩溃时的原因及时间、查找出的函数信息,生成日志文件。该日志文件包括软件运行中发生崩溃时的崩溃地址、时间、原因、函数名称、函数所在的源代码文件及函数在源代码文件中的行数。在本较佳实施例中,所述日志文件的格式如下:
[2008-08-08 13:13:33]
EXCEPTION ADDRESS:0x0040011082
EXCEPTIONTYPE:EXCEPTION_INT_DIVIDE_BY_ZERO=C0000094H
FUNCTION“Test1”AT“Dome.cpp”LINE:65
[2008-08-08 13:13:33]
其中,[2008-08-08 13:13:33]表示该软件运行中发生崩溃的时间、EXCEPTIONADDRESS:0x0040011082表示崩溃地址、EXCEPTIONTYPE:EXCEPTION_INT_DIVIDE_BY_ZERO=C0000094H表示发生崩溃的原因为除零错误、FUNCTION“Test1”AT“Dome.cpp”LINE:65表示该软件运行中发生崩溃时的函数名称为“Test1”、函数“Test1”所在的源代码文件名称为“Dome.cpp”及函数“Test1”在源代码文件“Dome.cpp”中的行数为第65行。
如图3所示,是本发明软件Bug追踪方法较佳实施例的流程图。
首先,步骤S10,获取模块210获取正在运行中的软件所包含的函数信息,将其保存到数据库50中。
步骤S11,当该软件在运行过程中发生崩溃时,激活模块211激活计算机20的操作系统中的全局触发器,以读取操作系统在该软件运行中发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址。具体而言,操作系统中包括一种触发机制,若出现程序错误导致该软件在运行中发生崩溃时,激活模块211会启动该触发机制,操作系统通过内部的内存查找函数查找该软件在运行中发生崩溃所对应的内存地址,之后操作系统弹出一个对话框,显示该内存地址信息。
步骤S12,异常捕获模块212启动操作系统中的异常处理函数,通过该异常处理函数捕获该软件运行中发生崩溃的原因及时间。
步骤S13,查找模块213将上述崩溃地址与数据库50中保存的函数信息进行比较,查找出该软件运行中发生崩溃所对应的函数信息。具体而言,查找模块213将所述的崩溃地址与数据库50中保存的函数信息中的内存地址进行比较,找出最接近的内存地址。假设所查找到的崩溃地址为“0x00401082”,其中“0x”为崩溃地址的前缀,查找模块213提取该崩溃地址中前缀“0x”后面的信息“00401082”,之后与数据库50中保存的函数信息进行比较,经过比较后确定该崩溃地址与函数信息中的内存地址“00401060”最接近,由此可知,所述软件在发生崩溃时的出错函数为“Test1”,该出错函数所在的源代码文件为“Dome.cpp”,该出错函数“Test1”在源代码文件中的行数为第65行。
步骤S14,日志生成模块214根据所述发生崩溃的原因及时间、查找出的函数信息,生成日志文件。该日志文件包括软件运行中发生崩溃时的崩溃地址、时间、原因、函数名称、函数所在的源代码文件及函数在源代码文件中的行数。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照以上较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (6)
1.一种软件Bug追踪的计算机系统,其特征在于,该计算机系统包括:
获取模块,用于获取正在运行中的软件所包含的函数信息,将其保存到数据库中;
激活模块,用于当该软件在运行过程中发生崩溃时,激活计算机操作系统中的全局触发器,以读取操作系统在该软件发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址;
异常捕获模块,用于启动操作系统中的异常处理函数,通过该异常处理函数捕获该软件发生崩溃的原因及时间;
查找模块,用于将上述崩溃地址与数据库中保存的函数信息进行比较,查找出该软件发生崩溃所对应的函数信息;及
日志生成模块,用于根据所述软件发生崩溃的原因及时间、查找出的函数信息,生成日志文件。
2.如权利要求1所述的软件Bug追踪的计算机系统,其特征在于,所述函数信息包括正在运行的软件所包含的函数名称、函数对应的内存地址、函数所对应的源代码文件名称及函数在源代码文件中的行数。
3.如权利要求1所述的软件Bug追踪的计算机系统,其特征在于,所述日志文件包括软件运行中发生崩溃时的崩溃地址、时间、原因、函数名称、函数所在的源代码文件名称及函数在源代码文件中的行数。
4.一种软件Bug追踪方法,其特征在于,该方法包括以下步骤:
获取正在运行中的软件所包含的函数信息,将其保存到数据库中;
当该软件运行中发生崩溃时,激活计算机操作系统中的全局触发器,以读取操作系统在该软件发生崩溃时所查找到的内存地址,该内存地址即为崩溃地址;
启动操作系统中的异常处理函数,通过该异常处理函数捕获该软件发生崩溃的原因及时间;
将上述崩溃地址与数据库中保存的函数信息进行比较,查找出该软件发生崩溃所对应的函数信息;及
根据所述软件发生崩溃的原因及时间、查找出的函数信息,生成日志文件。
5.如权利要求4所述的软件Bug追踪方法,其特征在于,所述函数信息包括正在运行的软件所包含的函数名称、函数对应的内存地址、函数所对应的源代码文件名称及函数在源代码文件中的行数。
6.如权利要求4所述的软件Bug追踪方法,其特征在于,所述日志文件包括软件运行中发生崩溃时的崩溃地址、时间、原因、函数名称、函数所在的源代码文件名称及函数在源代码文件中的行数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810306676A CN101770422A (zh) | 2008-12-30 | 2008-12-30 | 软件Bug追踪方法及其计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810306676A CN101770422A (zh) | 2008-12-30 | 2008-12-30 | 软件Bug追踪方法及其计算机系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101770422A true CN101770422A (zh) | 2010-07-07 |
Family
ID=42503295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810306676A Pending CN101770422A (zh) | 2008-12-30 | 2008-12-30 | 软件Bug追踪方法及其计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101770422A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789412A (zh) * | 2011-05-16 | 2012-11-21 | 康佳集团股份有限公司 | 定位代码bug的方法及其实现系统 |
CN104077210A (zh) * | 2014-06-06 | 2014-10-01 | 百度在线网络技术(北京)有限公司 | 一种客户端崩溃的定位方法及系统 |
CN105760302A (zh) * | 2016-02-29 | 2016-07-13 | 浪潮软件集团有限公司 | 一种移动应用异常信息处理方法 |
CN105988818A (zh) * | 2015-03-06 | 2016-10-05 | 展讯通信(天津)有限公司 | 一种bug自动调试系统及方法 |
CN106909431A (zh) * | 2015-12-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 定位函数性能问题的方法及装置 |
CN107430536A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 用于释放后使用存储器损坏漏洞的根本原因识别的技术 |
CN107463492A (zh) * | 2017-06-29 | 2017-12-12 | 北京五八信息技术有限公司 | 应用程序故障定位方法及装置 |
CN109213679A (zh) * | 2018-07-25 | 2019-01-15 | 努比亚技术有限公司 | 一种故障反馈方法、移动终端及计算机可读存储介质 |
CN110083471A (zh) * | 2018-01-25 | 2019-08-02 | 北京京东尚科信息技术有限公司 | 一种防止应用程序崩溃的方法和装置 |
CN110716747A (zh) * | 2019-09-17 | 2020-01-21 | 百富计算机技术(深圳)有限公司 | 基于函数参数统计的程序运行效率优化方法及终端设备 |
CN110795259A (zh) * | 2018-08-01 | 2020-02-14 | 北京京东尚科信息技术有限公司 | 一种分析应用崩溃的方法和装置 |
CN111381992A (zh) * | 2020-03-06 | 2020-07-07 | 北京五八信息技术有限公司 | 一种崩溃日志处理方法、装置、电子设备及存储介质 |
-
2008
- 2008-12-30 CN CN200810306676A patent/CN101770422A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789412A (zh) * | 2011-05-16 | 2012-11-21 | 康佳集团股份有限公司 | 定位代码bug的方法及其实现系统 |
CN104077210A (zh) * | 2014-06-06 | 2014-10-01 | 百度在线网络技术(北京)有限公司 | 一种客户端崩溃的定位方法及系统 |
CN104077210B (zh) * | 2014-06-06 | 2017-06-06 | 百度在线网络技术(北京)有限公司 | 一种客户端崩溃的定位方法及系统 |
CN105988818B (zh) * | 2015-03-06 | 2020-02-04 | 展讯通信(天津)有限公司 | 一种bug自动调试系统及方法 |
CN105988818A (zh) * | 2015-03-06 | 2016-10-05 | 展讯通信(天津)有限公司 | 一种bug自动调试系统及方法 |
CN107430536A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 用于释放后使用存储器损坏漏洞的根本原因识别的技术 |
CN107430536B (zh) * | 2015-03-27 | 2021-10-01 | 英特尔公司 | 识别释放后使用存储器损坏漏洞的根本原因的设备、方法与介质 |
CN106909431A (zh) * | 2015-12-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 定位函数性能问题的方法及装置 |
CN105760302A (zh) * | 2016-02-29 | 2016-07-13 | 浪潮软件集团有限公司 | 一种移动应用异常信息处理方法 |
CN107463492A (zh) * | 2017-06-29 | 2017-12-12 | 北京五八信息技术有限公司 | 应用程序故障定位方法及装置 |
CN110083471A (zh) * | 2018-01-25 | 2019-08-02 | 北京京东尚科信息技术有限公司 | 一种防止应用程序崩溃的方法和装置 |
CN109213679A (zh) * | 2018-07-25 | 2019-01-15 | 努比亚技术有限公司 | 一种故障反馈方法、移动终端及计算机可读存储介质 |
CN110795259A (zh) * | 2018-08-01 | 2020-02-14 | 北京京东尚科信息技术有限公司 | 一种分析应用崩溃的方法和装置 |
CN110716747A (zh) * | 2019-09-17 | 2020-01-21 | 百富计算机技术(深圳)有限公司 | 基于函数参数统计的程序运行效率优化方法及终端设备 |
CN111381992A (zh) * | 2020-03-06 | 2020-07-07 | 北京五八信息技术有限公司 | 一种崩溃日志处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101770422A (zh) | 软件Bug追踪方法及其计算机系统 | |
US8782609B2 (en) | Test failure bucketing | |
US9400733B2 (en) | Pattern matching framework for log analysis | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
CN101308471B (zh) | 一种恢复数据的方法及装置 | |
US8806452B2 (en) | Transformation of computer programs and eliminating errors | |
CN100504809C (zh) | 在不同的语言环境下实现测试脚本回放的装置和方法 | |
US10268568B2 (en) | System and method for data element tracing | |
US20070220481A1 (en) | Limited source code regeneration based on model modification | |
CN105095304A (zh) | 日志模板生成方法及设备 | |
CN104133733A (zh) | 一种内存错误检测方法 | |
CN109783457A (zh) | Cgi接口管理方法、装置、计算机设备和存储介质 | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
WO2023277819A3 (zh) | 数据处理方法、系统、设备、计算机程序产品及存储功能 | |
CN111443901A (zh) | 一种基于Java反射的业务扩展方法及装置 | |
CN114860654A (zh) | 一种基于Flink数据流的Iceberg表Schema动态变更方法及系统 | |
CN112540925A (zh) | 新特性兼容性检测系统及方法、电子设备及可读存储介质 | |
EP3422181B1 (en) | Method and device for generating code assistance information | |
Isradisaikul et al. | Finding counterexamples from parsing conflicts | |
US20070150866A1 (en) | Displaying parameters associated with call statements | |
CN110633199A (zh) | 用于支持智能合约的区块链的测试装置、方法及介质 | |
CN113918377B (zh) | C++程序崩溃的定位方法、装置、设备及存储介质 | |
KR102256894B1 (ko) | 크래시 리포트 그룹핑 방법, 서버 및 컴퓨터 프로그램 | |
CN115186001A (zh) | 一种补丁处理方法和装置 | |
CN113037521B (zh) | 识别通讯设备状态的方法、通讯系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100707 |