CN108984402A - 一种去除完美理解假设的软件故障定位系统 - Google Patents

一种去除完美理解假设的软件故障定位系统 Download PDF

Info

Publication number
CN108984402A
CN108984402A CN201810728884.0A CN201810728884A CN108984402A CN 108984402 A CN108984402 A CN 108984402A CN 201810728884 A CN201810728884 A CN 201810728884A CN 108984402 A CN108984402 A CN 108984402A
Authority
CN
China
Prior art keywords
debugging
user
information
key
message
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.)
Granted
Application number
CN201810728884.0A
Other languages
English (en)
Other versions
CN108984402B (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.)
North China University of Technology
Original Assignee
North China University of Technology
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 North China University of Technology filed Critical North China University of Technology
Priority to CN201810728884.0A priority Critical patent/CN108984402B/zh
Publication of CN108984402A publication Critical patent/CN108984402A/zh
Application granted granted Critical
Publication of CN108984402B publication Critical patent/CN108984402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/362Software debugging
    • 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/3438Recording 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 monitoring of user actions

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

本发明公开了一种关于去除完美理解假设的软件故障定位方法,本方法通过实现Eclipse监控插件,将用户的调试信息保存在MYSQL数据库中,这些信息包括用户的调试行为信息和程序上下文情景信息。通过分析这些信息发现,对于同一故障调试人员的调试轨迹具有一定的关联性,参照关键类本方法给出了调试中的关键信息,并采用基于标签的关键信息识别方法,作为通用的推荐规则,将关键信息作为推荐的内容,直接反馈到用户的集成开发环境中,从而辅助调试人员定位故障。

Description

一种去除完美理解假设的软件故障定位系统
技术领域
本发明涉及软件故障定位方法,特别是去除完美理解假设的情况下,定义与识别关键信息,并计算关键程度推荐给用户,辅助调试人员定位故障。
背景技术
对于软件调试来说,如何找到可用于推荐的关键信息是推荐系统在故障定位中应用的最重要一环。这激励Lisa Burnell和Eric Horvitz研究如何利用逻辑和概率推理的方法来支持软件调试,他们描述了一个基于逻辑的合成和概率推理的方法[18],可以被用来识别在复杂的软件中故障的来源和位置.该方法可以被用来诊断Sabre系统在运行时的错误,Sabre系统是世界上最大的分时预定系统.验证结果显示,该方法可以把软件工程师的注意力引向那些有很大可能包含错误的程序执行路径和程序指令上,从而提高调试效率.利用公式计算可疑度,将语句按照可疑度进行排名,推荐给用户。这种方式很大程度上减少了开发人员理解程序故障的时间,更快速的定位故障。其中较典型的比如Tarantula公式,Tarantula利用了从标准测试工具中很容易获得的信息:关于每组测试用例的成功/失败信息,每个测试用例执行的实体(比如,语句,分支,方法),以及待测程序的源代码。Tarantula的思路是,在一个主要执行失败的测试用例的程序比那些主要通过成功测试用例的程序更有可能是错误的.不同于此前使用的故障定位技术,Tarantula允许一些对错误的容忍偶尔可以通过成功的测试用例.这种容忍经常可以提供更有效的故障定位信息。
从2008年至今,国内外出现很多关于关键类识别的文献,比如:《AutomaticIdentification of Key Classes in a Software System Using WebminingTechniques》、《一种基于关键类判定的代码提交理解辅助方法》、《基于关键类判定的代码提交理解辅助方法》,国内外学者不断通过实验验证关键类关键变量的识别可以提高软件在开发和调试过程中的速度和准确度。但目前尚缺乏关于调试时的关键类、关键变量规则的提出,本课题针对这一缺陷,通过监控、搜集调试信息,提出关键变量存在的通用规则,给出代码推荐的统一模式。
本方法关于关键信息的定义参照Philippe Galinier等学者对关键类的定义:
(1)最重要的类一定需要更深层的测试
(2)频繁修改的类是最复杂的且发生错误倾向最大的
(3)从本质上来说,某个元素引用的其他元素的数量越多,这个元素就越重要.
发明内容
本发明作为辅助软件故障定位的手段,所要解决的是如何从调试信息中识别出关键信息,并将计算后的关键信息按照关键程度排名推荐给用户。
本发明的技术解决问题是:关键信息的识别,并推荐给用户,提高故障定位的效率。
本发明的技术解决方案:基于标签的关键信息识别方法。
调试信息的收集是利用eclipse监控插件监控调试人员调试行为,并将其保存在MYSQL数据库中,包括用户设置的断点位置、断点表达式、查看的变量等信息。
关键信息的识别与推荐是受机器学习在推荐系统领域有效性的启发,利用UGC标签应用算法,从程序的调试信息中抽取可判别性特征来度量程序中调试信息的关键性。UGC(User Generated Content,用户生成的内容)是一种表示用户兴趣和对象语义的重要方式。当一个用户对一个对象打上标签,这个标签一方面描述了用户的兴趣,另一方面则表示对象的语义,从而将用户和对象联系起来。在本方法中,标签来源是监控到的用户调试信息,对象指的是关键信息。其中,关键信息关键程度的计算公式如下:
其中,p(u,i)指的是程序u中变量i的关键程度,nu,b指的是程序u中断点行b的设置次数,nb,i指的是断点行b中变量i被查看的次数,指的是断点行b被多少个不同的用户设置过。
推荐算法中的元素定义如下:
1)标签(records)
用records存储标签数据的四元组:
records[i]=[projectName,breakpoint_line,value,countValue]
projectName指的是调试项目的名称,breakpoint_line指的是设置断点的位置,value指的是用户查看的变量,countVaule是一个数组,统计当前变量被查看的次数。
2)断点信息(project_tags)
用project_tags存储即程序u中断点行b的设置次数
project_tags[u][b]=n_(u,b);
3)变量信息(tag_items)
用tag_items存储用户调试时查看的变量信息
tag_items[b][i]=n_(b,i)
利用算法中的addValueToMat(theMat,key,value,incr)方法可以从records中统计出project_tags和tag_items,最后利用关键程度计算公式计算调试信息的关键程度,并以此为依据推荐给用户。
本发明与现有技术相比的有益效果是:
1)分析现有的故障定位技术,发现完美理解假设的故障定位方法中的缺陷;
2)收集历史调试轨迹,在分析人为调试行为的基础上做关键信息的识别与推荐;
3)从收集调试用户的调试信息出发,对影响调试效率的因素进行分析,提出了关键信息的存在,并提出基于标签的关键信息识别方法,将关键信息推荐给用户,从而提高故障定位的速度,提高调试效率。
附图说明
图1为监控插件的框架图。
图2为基于标签的推荐算法结构图。
具体实施方式
下面将结合附图对本发明做进一步的详细说明。
目前关于软件故障定位的研究都试图用某种计算方式预估程序易出错的位置,并推荐给用户,但通过研究和分析发现这些研究中有的忽略了人为参与的因素,导致故障定位的效果不如预期。本方法师徒去除这种完美理解假设的故障定位方法,以人为的历史调试轨迹为分析对象,找出共性,并提出基于标签的关键信息识别方法,作为推荐依据推荐给用户。
如图1所示,本发明实现了监控调试人员行为轨迹的监控插件。当用户产生调试行为时,Eclipse平台上注入的监控插件会根据监控逻辑捕获用户调试行为的各属性数据,以及行为所处程序的上下文环境,经过数据处理模块,得到相关的信息,主要包括:用户ID,程序的类名、方法名、断点的位置和数量、断点表达式、查看的变量等。并将信息保存在MYSQL数据库当中,用作后续的关键信息识别与推荐。
本发明中基于标签的关键信息识别方法结构图如图2所示。主要分为标签子系统和推荐子系统,标签子系统会对数据库中的调试信息进行分析和识别,首先建立用户和断点信息的映射,然后建立用户查看变量与断点之间的映射,生成用户-断点行-变量三元组保存标签数据,进入推荐子系统。推荐子系统会根据推荐算法计算调试信息的关键程度,包括程序语句、程序变量、程序分支在程序中的关键程度,并会给出相应的评分,按照评分高低,和当前用户设置的断点位置,将相关的TOP N关键信息推荐给用户。
为了评估本发明的去除完美理解假设的软件故障定位方法,与当前软件故障定位领域被认为最有前景之一的基于程序频谱的故障定位技术(SBFL)进行实验比较。SBFL通常利用失败的和成功的程序频谱来评估程序中所有实体的风险值,并按照风险值进行排名推荐给用户。故障定位公式将选取SBFL技术中较典型的Jaccard公式进行比较。

Claims (2)

1.一种去除完美理解假设的软件故障定位系统,其特征在于:关键信息识别模块和推荐模块;
关键信息识别模块:
通过分析监控到的调试信息,在数据库中建立关键信息与非关键信息之间的映射。具体来说,从搜集到的调试信息中提取结构性耦合信息及代码调试特征作为可判别特征,用来度量信息的关键性,识别出关键信息,包括程序中的关键变量、关键语句、关键分支。调试特征利用UGC标签应用算法获取,变量与变量之间的结构性耦合信息指明了变量之间所满足的静态耦合关系。
推荐模块:
受机器学习技术在推荐系统领域有效性的启发,本发明提出一种基于标签的关键信息识别方法,利用UGC标签应用算法,从程序的调试信息中抽取可判别性特征来度量程序中调试信息的关键性。可判别特征具体指的是变量与变量之间结构性耦合信息及代码调试特征。UGC(User Generated Content,用户生成的内容)是一种表示用户兴趣和对象语义的重要方式。当一个用户对一个对象打上标签,这个标签一方面描述了用户的兴趣,另一方面则表示对象的语义,从而将用户和对象联系起来。在本方法中,标签来源是监控到的用户调试信息,包括用于设置的断点行、查看的变量等;对象指的是调试中的关键信息,包括语句、变量、分支。根据此算法,可得出目标调试程序中关键信息的排名程度,并将按照此排名在用户产生调试行为时,根据当前调试情况,将信息动态的反馈到用户的集成开发环境中。
2.根据权利要求1所述的去除完美理解假设的软件故障定位系统,其特征在于:首先设计监控工具,对目前相对有前景的故障定位技术进行信息收集和分析,发现这些技术对故障定位效率的影响不高,究其原因是缺少人为因素的考虑。本方法在收集人为调试行为轨迹的基础上,对调试过程产生关键影响的因素进行分析与识别,利用UGC标签应用算法,对保存在数据库中的调试信息进行检索与计算,确定每个程序的关键信息排名,并将其推荐给调试用户。
CN201810728884.0A 2018-07-05 2018-07-05 一种去除完美理解假设的软件故障定位系统 Active CN108984402B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810728884.0A CN108984402B (zh) 2018-07-05 2018-07-05 一种去除完美理解假设的软件故障定位系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810728884.0A CN108984402B (zh) 2018-07-05 2018-07-05 一种去除完美理解假设的软件故障定位系统

Publications (2)

Publication Number Publication Date
CN108984402A true CN108984402A (zh) 2018-12-11
CN108984402B CN108984402B (zh) 2021-07-16

Family

ID=64537071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810728884.0A Active CN108984402B (zh) 2018-07-05 2018-07-05 一种去除完美理解假设的软件故障定位系统

Country Status (1)

Country Link
CN (1) CN108984402B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112711537A (zh) * 2020-12-31 2021-04-27 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 软件缺陷定位方法及装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
CN101046765A (zh) * 2006-03-29 2007-10-03 华为技术有限公司 一种定位软件故障的方法
CN101739339A (zh) * 2009-12-29 2010-06-16 北京航空航天大学 一种基于程序动态依赖关系的软件故障定位方法
CN102968369A (zh) * 2012-03-23 2013-03-13 中国科学院计算技术研究所 一种动态断点的自动生成方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
CN101046765A (zh) * 2006-03-29 2007-10-03 华为技术有限公司 一种定位软件故障的方法
CN101739339A (zh) * 2009-12-29 2010-06-16 北京航空航天大学 一种基于程序动态依赖关系的软件故障定位方法
CN102968369A (zh) * 2012-03-23 2013-03-13 中国科学院计算技术研究所 一种动态断点的自动生成方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZHANG CHENG等: "Automated Breakpoint Generation for Debugging", 《JOURNAL SOFTWARE》 *
罗奇鸣: "综合利用语句和序列可疑度的软件故障定位方法", 《小型微型计算机系统》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112711537A (zh) * 2020-12-31 2021-04-27 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 软件缺陷定位方法及装置、电子设备及存储介质
CN112711537B (zh) * 2020-12-31 2022-08-12 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 软件缺陷定位方法及装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN108984402B (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
CN105975604B (zh) 一种分布迭代式数据处理程序异常检测与诊断方法
CN113282461B (zh) 传输网的告警识别方法和装置
Arora et al. Automatic checking of conformance to requirement boilerplates via text chunking: An industrial case study
Kobayashi et al. Towards an NLP-based log template generation algorithm for system log analysis
CN109992484B (zh) 一种网络告警相关性分析方法、装置和介质
CN106776208A (zh) 一种软件运行时故障定位方法
CN109189674A (zh) 一种软件缺陷自动上报的方法及系统
CN111400505A (zh) 一种用电信息采集系统匹配故障消缺方案的方法及系统
US20150149541A1 (en) Leveraging Social Media to Assist in Troubleshooting
CN110515826A (zh) 一种基于次数频谱与神经网络算法的软件缺陷定位方法
CN116523284A (zh) 基于机器学习的业务操作流程自动化评估方法、系统
US11403304B2 (en) Automatically curating existing machine learning projects into a corpus adaptable for use in new machine learning projects
CN111666978A (zh) 一种it系统运维大数据的智能故障预警系统
CN114792140A (zh) 一种基于知识图谱的变电站缺陷分析系统
CN108984402A (zh) 一种去除完美理解假设的软件故障定位系统
CN113157521B (zh) 用于区块链全生命周期的监控方法和监控系统
CN112882899B (zh) 一种日志异常检测方法及装置
CN112163132B (zh) 一种数据标注方法、装置、存储介质及电子设备
CN115185920B (zh) 一种日志类型的检测方法、装置及设备
Li et al. Improving performance of log anomaly detection with semantic and time features based on bilstm-attention
CN114969334B (zh) 异常日志检测方法、装置、电子设备及可读存储介质
Ni et al. Predicting severity of software vulnerability based on BERT-CNN
CN115658360A (zh) 一种基于日志数据的云系统故障诊断方法
Cavalcanti et al. One step more to understand the bug report duplication problem
EP3965024A1 (en) Automatically labeling functional blocks in pipelines of existing machine learning projects in a corpus adaptable for use in new machine learning projects

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