CN114880247B - 分布式条件下基于日志引导系统的bug分析方法 - Google Patents

分布式条件下基于日志引导系统的bug分析方法 Download PDF

Info

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
Application number
CN202210778056.4A
Other languages
English (en)
Other versions
CN114880247A (zh
Inventor
柯宝丰
张晓敏
王南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Xingyuanjie Technology Co ltd
Original Assignee
Chengdu Xingyuanjie Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Xingyuanjie Technology Co ltd filed Critical Chengdu Xingyuanjie Technology Co ltd
Priority to CN202210778056.4A priority Critical patent/CN114880247B/zh
Publication of CN114880247A publication Critical patent/CN114880247A/zh
Application granted granted Critical
Publication of CN114880247B publication Critical patent/CN114880247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data 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出现都是概率性的,非必然出现的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分析方法,其特征在于,缩小堆栈范围通过分析人员经验或者固定规则进行。
CN202210778056.4A 2022-07-04 2022-07-04 分布式条件下基于日志引导系统的bug分析方法 Active CN114880247B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 腾讯音乐娱乐科技(深圳)有限公司 程序问题的定位方法、电子设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
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