CN114880247B - 分布式条件下基于日志引导系统的bug分析方法 - Google Patents
分布式条件下基于日志引导系统的bug分析方法 Download PDFInfo
- Publication number
- CN114880247B CN114880247B CN202210778056.4A CN202210778056A CN114880247B CN 114880247 B CN114880247 B CN 114880247B CN 202210778056 A CN202210778056 A CN 202210778056A CN 114880247 B CN114880247 B CN 114880247B
- Authority
- CN
- China
- Prior art keywords
- bug
- stack
- error
- variable
- log
- 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.)
- Active
Links
Images
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供的分布式条件下基于日志引导系统的BUG分析方法,涉及软件测试技术领域。本发明能对产生BUG的问题部分进行快速定位,通过日志信息系统对函数所使用的参数/变量进行排查,找到错误参数/变量,从而找到函数中发生错误的部分,进而对这部分进行快速定位,由于直接检查错误参数/变量,因此能排查出正常逻辑BUG与分析程序的流程BUG外的问题,此外,在对堆栈进行排查时,采用逐渐缩小排查范围的方式,逐渐缩小堆栈范围能避免对所有参数/变量进行遍历检查,从而减小工作量,加快BUG定位效率,节省人力物力资源,兼顾实用性与便捷性。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及分布式条件下基于日志引导系统的BUG分析方法。
背景技术
计算机技术的飞速发展,越来越多的软件程序运用到我们工作生活中;其中,大量的软件、系统、平台等都依靠分布式架构进行部署,这些软件程序难免出现BUG的情况,在BUG出现时,我们需对其进行及时的排查、定位和修复,其中,BUG定位是最重要的环境,若能准确定位,便能进行快速修复,避免操作更进一步的损失。
传统调试定位BUG的方法通常是基于静态调试代码的,在分析程序的正常逻辑BUG与分析程序的流程BUG时,这种分析方式分析单线程程序是比较容易且有效的。
但是,在分布式条件下,所有的函数都是天然并发的,对于这种开发情况,在调试与开发测试过程中是无法使用常规的调试方式调试一些BUG。这些BUG的出现是不定时的,有概率发生的。相对于其他的开发调试BUG,该类型BUG是不易被发现的,通过调试判断这种BUG的发生点是不容易的。该类型BUG是必须要进行动态调试,来分析和解决。
分布式下动态调试代码是一件非常困难的事情,在现有的条件下,会出现同一套代码,在同一个时间段,有着不同的表现,而且所有的BUG出现都是概率性的,非必然出现的BUG。
然而,针对于不同业务的分布式模型。当前的调试器类似VS GDB等,有着天然的缺陷。他们无法动态调试分布式代码,他们只能够静态的调试代码分析其中的逻辑BUG。
因此,有必要提供分布式条件下基于日志引导系统的BUG分析方法来解决上述技术问题。
发明内容
为解决上述之一技术问题,本发明提供的分布式条件下基于日志引导系统的BUG分析方法,用于对分布式条件下的程序系统进行动态BUG分析,所述程序系统中的函数通过堆栈对参数/变量进行数据存入或取出,所述BUG分析方法包括如下步骤:
步骤S1:查看系统程序是否发生BUG;若发生BUG,则执行下一步;若未发生BUG,则继续监测系统程序是否发生BUG;
步骤S2:查找发生BUG时,出现报错的函数,并对报错函数进行记录;
步骤S3:定位报错函数所对应的堆栈范围;
步骤S4:在堆栈范围内部署日志信息系统,所述日志信息系统对堆栈范围内数据进行读取、记录、打上对应时间戳,并保存为日志信息;
步骤S5:打印日志信息,查看是否能找到错误参数/变量;若检查到错误参数/变量,则执行步骤S8;若未发现错误参数/变量,则执行步骤S6;
步骤S6:缩小堆栈范围;
步骤S7:打印缩小范围后堆栈对应的日志信息,查看是否能找到错误参数/变量;若检查到错误参数/变量,则执行步骤S8;若未发现错误参数/变量,则执行步骤S6;
步骤S8:对错误参数/变量进行定位,找到错误参数/变量在函数中对应的问题部分;
步骤S9:对问题部分进行修改与调试,删除日志信息系统,得到调试后的程序系统;
步骤S10:将调试后的程序系统进行重编译,并进行运行;查看调试后的程序系统是否发生BUG;若发生BUG,则执行步骤S2;若未发生BUG,则完成动态BUG分析。
作为更进一步的解决方案,所述堆栈包括堆栈段和堆栈指针,错误参数/变量通过堆栈段内数据进行判断,错误参数/变量通过堆栈指针进行定位。
作为更进一步的解决方案,缩小堆栈范围通过分析人员经验或者固定规则进行。
与相关技术相比较,本发明提供的分布式条件下基于日志引导系统的BUG分析方法具有如下有益效果:
本发明能对产生BUG的问题部分进行快速定位,通过日志信息系统对函数所使用的参数/变量进行排查,找到错误参数/变量,从而找到函数中发生错误的部分,进而对这部分进行快速定位,由于直接检查错误参数/变量,因此能排查出正常逻辑BUG与分析程序的流程BUG外的问题,此外,在对堆栈进行排查时,采用逐渐缩小排查范围的方式,逐渐缩小堆栈范围能避免对所有参数/变量进行遍历检查,从而减小工作量,加快BUG定位效率,节省人力物力资源,兼顾实用性与便捷性。
附图说明
图1为本发明实施例提供的分布式条件下基于日志引导系统的BUG分析方法的较佳流程示意图;
图2为本发明实施例提供的分布式条件下基于日志引导系统的BUG分析方法的堆栈结构图。
具体实施方式
下面结合附图和实施方式对本发明作进一步说明。
分布式条件下出现的问题,大多都是出于两种原因,第一种是分布式条件下多进程间通信BUG,第二种是分布式条件下多线程的异步通信BUG。这类问题不是程序的逻辑导致的BUG,具体表现为:
分布式条件下,同一套代码,在同一个时间段,有着不同的表现,而且所有的BUG出现都是概率性的,非必然出现的BUG;此外,还会存在报错的是A软件,但是实际上引起错误的却是B软件,这种情况下,通过常规的BUG调试与分析是不可能发现的。他们的存在往往是计算机的底层业务问题,没有梳理清楚,底层框架没有搭建的合理。
因此,如图1所示,本实施例提供的分布式条件下基于日志引导系统的BUG分析方法,用于对分布式条件下的程序系统进行动态BUG分析,所述程序系统中的函数通过堆栈对参数/变量进行数据存入或取出,所述BUG分析方法包括如下步骤:
步骤S1:查看系统程序是否发生BUG;若发生BUG,则执行下一步;若未发生BUG,则继续监测系统程序是否发生BUG;
步骤S2:查找发生BUG时,出现报错的函数,并对报错函数进行记录;
步骤S3:定位报错函数所对应的堆栈范围;
步骤S4:在堆栈范围内部署日志信息系统,所述日志信息系统对堆栈范围内数据进行读取、记录、打上对应时间戳,并保存为日志信息;
步骤S5:打印日志信息,查看是否能找到错误参数/变量;若检查到错误参数/变量,则执行步骤S8;若未发现错误参数/变量,则执行步骤S6;
步骤S6:缩小堆栈范围;
步骤S7:打印缩小范围后堆栈对应的日志信息,查看是否能找到错误参数/变量;若检查到错误参数/变量,则执行步骤S8;若未发现错误参数/变量,则执行步骤S6;
步骤S8:对错误参数/变量进行定位,找到错误参数/变量在函数中对应的问题部分;
步骤S9:对问题部分进行修改与调试,删除日志信息系统,得到调试后的程序系统;
步骤S10:将调试后的程序系统进行重编译,并进行运行;查看调试后的程序系统是否发生BUG;若发生BUG,则执行步骤S2;若未发生BUG,则完成动态BUG分析。
需要说明的是:本实施例所提出的方法主要服务于分析分布式下的动态BUG分析方法。其底层系统采用了操作系统的文件输入/输出流,操作系统提供的时间系统,动态的打印程序的运行时问题。
该系统需要明确报错的函数具体堆栈。首先需要定位报错的堆栈。在报错的函数堆栈上下文中,寻找两个合适的点,对于可能引发错误的参数与变量进行打印。将日志系统编译进分布式软件中,进行再次的测试。具体体现为:某一参数或者变量无法按照原有逻辑输出/输入对应的数据;当软件报错时候,查看打印的日志信息,分析其中的参数/变量变化原因,缩小出错的函数上下文的堆栈的范围。分析完毕后,再次将日志系统定位的函数堆栈减小。再次重复上一步,编译,运行。重复执行多次之后,就可以定位到具体出错的函数堆栈的定位点。对该定位点的所有变量进行分析与测试,浮现该BUG,通过对指定的参数进行修改与调试,解决当前BUG。
由于函数中存在着大量的参数/变量,若一一进行排查,首先是逻辑结构复杂,BUG定位困难,其次是需要花费大量时间,不具备实用性。此外,由于分布式架构下,代码的流程、逻辑等均无问题,但是在运行时,仍然会产生BUG,传统方法无法对这样的情况进行排查。而本实施例所提出的方法能对产生BUG的问题部分进行快速定位,通过日志信息系统对函数所使用的参数/变量进行排查,找到错误参数/变量,从而找到函数中发生错误的部分,进而对这部分进行快速定位,由于直接检查错误参数/变量,因此能排查出正常逻辑BUG与分析程序的流程BUG外的问题,此外,在对堆栈进行排查时,采用逐渐缩小排查范围的方式,逐渐缩小堆栈范围能避免对所有参数/变量进行遍历检查,从而减小工作量,加快BUG定位效率,节省人力物力资源,兼顾实用性与便捷性。
逐渐缩小堆栈范围类似于对汽车进行检修时,先对大部件进行排查,若大部件存在问题,则进一步缩小范围,检查更小的部件,直至发现问题零件。
作为更进一步的解决方案,如图2所示,所述堆栈包括堆栈段和堆栈指针,错误参数/变量通过堆栈段内数据进行判断,错误参数/变量通过堆栈指针进行定位。
作为更进一步的解决方案,缩小堆栈范围通过分析人员经验或者固定规则进行。
需要说明的是:分析人员经验是分析人员根据实际情况设置的缩小堆栈范围的规则,当然,在一切情况中,也能采用二分法,等比缩放法等固定规则进行堆栈范围缩小。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (3)
1.分布式条件下基于日志引导系统的BUG分析方法,其特征在于,用于对分布式条件下的程序系统就进行动态BUG分析,所述程序系统中的函数通过堆栈对参数/变量进行数据存入或取出,所述动态BUG分析步骤包括:
步骤S1查看系统程序是否发生BUG;若发生BUG,则执行下一步;若未发生BUG,则继续监测系统程序是否发生BUG;
步骤S2查找发生BUG时,出现报错的函数,并对报错函数进行记录;
步骤S3定位报错函数所对应的堆栈范围;
步骤S4在堆栈范围内部署日志信息系统,所述日志信息系统对堆栈范围内数据进行读取、记录、打上对应时间戳,并保存为日志信息;
步骤S5在报错的函数堆栈上下文中,寻找两个合适的点,对于可能引发错误的参数与变量进行打印;查看是否能找到错误参数/变量;若检查到错误参数/变量,则执行步骤S8;若未发现错误参数/变量,则执行步骤S6;
步骤S6缩小堆栈范围内;
步骤S7在缩小范围后的堆栈上下文中,寻找两个合适的点,对于可能引发错误的参数与变量进行打印;查看是否能找到错误参数/变量;若检查到错误参数/变量,则执行步骤S8;若未发现错误参数/变量,则执行步骤S6;
步骤S8对错误参数/变量进行定位,找到错误参数/变量在函数中对应的问题部分;
步骤S9对问题部分进行修改与调试,删除日志信息系统,得到调试后的程序系统;
步骤S10将调试后的程序系统进行重编译,并进行运行;查看调试后的程序系统是否发生BUG;若发生BUG,则执行步骤S2;若未发生BUG,则完成动态BUG分析。
2.根据权利要求1所述的分布式条件下基于日志引导系统的BUG分析方法,其特征在于,所述堆栈包括堆栈段和堆栈指针,错误参数/变量通过堆栈段内数据进行判断,错误参数/变量通过堆栈指针进行定位。
3.根据权利要求1所述的分布式条件下基于日志引导系统的BUG分析方法,其特征在于,缩小堆栈范围通过分析人员经验或者固定规则进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210778056.4A CN114880247B (zh) | 2022-07-04 | 2022-07-04 | 分布式条件下基于日志引导系统的bug分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210778056.4A CN114880247B (zh) | 2022-07-04 | 2022-07-04 | 分布式条件下基于日志引导系统的bug分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114880247A CN114880247A (zh) | 2022-08-09 |
CN114880247B true CN114880247B (zh) | 2022-09-20 |
Family
ID=82683598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210778056.4A Active CN114880247B (zh) | 2022-07-04 | 2022-07-04 | 分布式条件下基于日志引导系统的bug分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880247B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618940A (zh) * | 2019-09-19 | 2019-12-27 | 腾讯科技(深圳)有限公司 | 堆栈信息追踪方法、装置、计算机可读介质及计算装置 |
CN112825057A (zh) * | 2019-11-20 | 2021-05-21 | 广州凡科互联网科技股份有限公司 | 一种可快速定位错误代码、监控ajax请求服务异常的监控方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013159144A1 (en) * | 2012-04-23 | 2013-10-31 | Joshua Michael Young | Methods and devices and systems for positioning input devices and creating control signals |
CN112882892B (zh) * | 2021-02-05 | 2024-04-12 | 成都新希望金融信息有限公司 | 数据处理方法和装置、电子设备及存储介质 |
CN114528201A (zh) * | 2021-11-16 | 2022-05-24 | 平安银行股份有限公司 | 异常代码定位方法、装置、设备及介质 |
CN114116400A (zh) * | 2021-11-30 | 2022-03-01 | 平安科技(深圳)有限公司 | 基于日志打印的应用异常处理方法、装置、设备及介质 |
CN114328101A (zh) * | 2021-12-24 | 2022-04-12 | 武汉众智数字技术有限公司 | 一种软件故障定位与修复的方法与系统 |
CN114691505A (zh) * | 2022-03-25 | 2022-07-01 | 腾讯音乐娱乐科技(深圳)有限公司 | 程序问题的定位方法、电子设备及存储介质 |
-
2022
- 2022-07-04 CN CN202210778056.4A patent/CN114880247B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618940A (zh) * | 2019-09-19 | 2019-12-27 | 腾讯科技(深圳)有限公司 | 堆栈信息追踪方法、装置、计算机可读介质及计算装置 |
CN112825057A (zh) * | 2019-11-20 | 2021-05-21 | 广州凡科互联网科技股份有限公司 | 一种可快速定位错误代码、监控ajax请求服务异常的监控方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114880247A (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110107307A1 (en) | Collecting Program Runtime Information | |
Memon et al. | DART: a framework for regression testing" nightly/daily builds" of GUI applications | |
Osman et al. | Mining frequent bug-fix code changes | |
US20090070738A1 (en) | Integrating program construction | |
CN109669866B (zh) | 一种软件运行时故障传播路径的获取方法 | |
CN110069404B (zh) | 代码调试方法、装置、设备及介质 | |
US9734042B1 (en) | System, method, and computer program for automated parameterized software testing | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
US10853051B2 (en) | Automated candidate repair patch generation | |
CN114880247B (zh) | 分布式条件下基于日志引导系统的bug分析方法 | |
Debbarma et al. | Static and dynamic software metrics complexity analysis in regression testing | |
Zhao et al. | Event handler-based coverage for GUI testing | |
CN117632721A (zh) | 测试用例的生成方法、装置及电子设备 | |
CN117215959A (zh) | 软件测试方法、装置、设备及存储介质 | |
US10642716B1 (en) | Automated software program repair | |
US10761962B1 (en) | Automated software program repair | |
US6546526B2 (en) | Active trace debugging for hardware description languages | |
CN114661615B (zh) | 一种fpga软件测试方法和设备 | |
Wong et al. | An execution slice and inter-block data dependency-based approach for fault localization | |
CN113051582B (zh) | 一种计算机软件技术开发调试系统 | |
CN114579431A (zh) | 一种基于混合分析的除零错误检测方法 | |
JPH11224211A (ja) | ソフトウェア検査支援装置 | |
CN110795142A (zh) | 一种配置文件的生成方法及装置 | |
KR102523329B1 (ko) | 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 | |
CN112527680B (zh) | 一种基于Fitnesse框架的项目API级全链路自动化测试方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |