DeepFD: Automated Fault Diagnosis and Localization for Deep Learning Programs
The Hong Kong University of Science and Technology(香港科技大学);Guangzhou HKUST Fok Ying Tung Research Institute(广州香港科技大学霍英东研究院);Huazhong University of Science and Technology(华中科技大学);University of Waterloo(滑铁卢大学);MIT-IBM Watson AI Lab(麻省理工学院-IBM沃森人工智能实验室)
随着深度学习(DL)系统被广泛部署用于关键任务应用程序,调试此类系统变得至关重要。大多数现有的工作在训练的深度神经网络(DNN)上识别和修复可疑神经元,不幸的是,这可能是一个弯路。具体来说,一些现有的研究报告说,许多不满意的行为实际上是源于故障驻留在DL程序。此外,定位错误神经元对开发人员来说是不可操作的,而定位DL程序中的错误语句可以为开发人员提供更多有用的调试信息。虽然最近的一些研究提出了在DL程序或训练设置(例如,太大的学习率),他们主要是基于预定义的规则,导致许多误报或漏报,特别是当故障超出了他们的能力。鉴于这些局限性,在本文中,我们提出了DeepFD,一个基于学习的故障诊断和定位框架,它将故障定位任务映射到学习问题。特别是,它通过监测DNN模型训练过程中提取的运行时特征来推断可疑故障类型,然后在DL程序中定位诊断的故障。它通过识别DL程序中的故障的根本原因而不是神经元,并通过学习方法而不是一组硬编码的规则来诊断故障,从而克服了局限性。评估显示了DeepFD的潜力。它正确诊断了52%的错误DL程序,而最先进的作品只有大约一半(27%)。此外,对于故障定位,DeepFD也优于现有的工作,正确定位42%的故障程序,这几乎是现有工作的最佳结果(23%)的两倍。
2022-05-04 cs.LG cs.SE
RESTORE: Retrospective Fault Localization Enhancing Automated Program Repair
本文提出回顾式故障定位技术,通过复用失败补丁验证结果进行基于变异的动态分析,并在RESTORE工具中实现,在Defects4J基准上以更高效率修复了41个缺陷,显著优于现有Java自动修复工具。
2020-03-31 cs.SE
Mutation-based Fault Localization of Deep Neural Networks
Iowa State University(爱荷华州立大学)
本文提出一种名为deepmufl的基于变异的深度神经网络故障定位新技术,在109个StackOverflow漏洞测试中检测出53个,优于现有方法,并通过变异选择将定位时间减半且仅损失7.55%的top-1定位率。
2023-09-10 cs.LG cs.SE
An Empirical Study of Fault Localization Families and Their Combinations
故障定位技术的性能对于它们在实践中的采用至关重要。本文报告了一个广泛的故障定位技术在现实世界中的故障的实证研究。与以往的研究不同,本文(1)考虑了来自不同家族的广泛技术,(2)结合了不同的技术,(3)考虑了不同技术的执行时间。我们的研究结果表明,一个组合的技术显着优于任何单独的技术(200%的增加,故障定位在顶部1),这表明组合可能是一个理想的方式来应用故障定位技术,未来的技术也应该在组合设置进行评估。我们的实现是公开的评估和结合故障定位技术。
2019-01-07 cs.SE
A Fault Localization and Debugging Support Framework driven by Bug Tracking Data
Graz University of Technology(格拉茨工业大学)
故障定位已被确定为软件开发生存周期中的主要资源因素。学术故障定位技术大多是未知的,在专业环境中使用。虽然手动调试方法可以根据错误类型(例如内存错误或语义错误)而显着变化,但这些差异并没有反映在大多数现有的故障定位工具中。很少有研究自动识别错误类型,以优化故障定位过程。此外,现有的故障定位技术仅利用历史数据来增强可疑性排名。本论文的目的是提供一个错误定位的框架,结合来自不同来源的数据,以帮助开发人员在错误定位过程中。为了实现这一目标,引入了一个错误分类模式,基准创建,并提出了一种新的故障定位方法的基础上的历史数据。
2021-03-03 cs.AI cs.SE
Assessing and Comparing Mutation-based Fault Localization Techniques
最近的研究表明,基于突变的故障定位技术是相对准确和实用的。然而,这些方法从未被比较过,并且仅用简单的手动播种故障进行评估。因此,当涉及到实际故障时,它们的实际实用性是值得怀疑的。为了解决这个问题,我们评估和比较两个主要的基于突变的故障定位方法,名为Metallaxis和MUSE,在一组现实世界的程序和故障。我们的结果基于三个典型的评估指标表明,基于突变的故障定位方法是相对准确的,并提供相关的信息,开发人员。总的来说,我们的结果表明,Metallaxis和MUSE需要18%和37%的程序语句来查找查找故障。此外,当开发人员检查10个和25个语句时,这两种方法都可以定位50%和80%的研究错误。
2016-07-19 cs.SE
Learning Tractable Probabilistic Models for Fault Localization
University of Washington(华盛顿大学)
近年来,一些概率技术已被应用于各种调试问题。然而,大多数现有的概率调试系统使用相对简单的统计模型,并未能推广到多个程序。在这项工作中,我们提出了可处理的故障定位模型(TFLMs),可以从数据中学习,并概率地推断错误的位置。虽然大多数以前的统计调试方法都是在单个程序的多次执行上进行推广,但TFLM是在以前看到的错误程序的语料库上进行训练的,并学会识别错误的重复模式。广泛使用的故障定位技术,如TARANTALY评估孤立的每条线路的可疑性;相比之下,TFLM定义了每条线路的故障指标变量的联合概率分布。具有丰富依赖结构的联合分布通常在计算上是难以处理的; TFLM通过利用易处理的概率模型(特别是关系SPN)的最新发展来避免这一点。此外,TFLM还可以包含其他信息源,包括基于覆盖范围的功能,如TARANTTM。我们评估故障定位性能的TFLM,包括TARANTHALDS分数的概率模型中的功能。我们的研究表明,学习TFLM隔离错误更有效地比以前的统计方法或直接使用TARANTFLOW。
2015-07-07 cs.LG cs.SE
Test Case Purification for Improving Fault Localization
在软件开发中,查找和修复bug是非常耗时的活动。基于谱的故障定位是指根据测试用例的执行轨迹来确定源代码中的故障位置。失败的测试用例和它们的断言形成了被分析系统的失败行为的测试预言。本文提出了一种新的频谱驱动测试用例净化的概念,以提高故障定位。测试用例纯化的目标是将现有的测试用例分成小部分(称为纯化的测试用例),并增强测试预言机以进一步定位故障。结合原始故障定位技术(例如,Tarantula),测试用例净化结果更好地对程序语句进行排名。通过对6个开放源代码Java程序中的1800个错误的实验表明,测试用例净化可以有效地改进现有的错误定位技术。
2014-09-10 cs.SE
Variability Fault Localization: A Benchmark
软件故障定位是程序调试中最昂贵、最繁琐、最耗时的活动之一。由于软件产品线(SPL)系统中故障的可变性,该活动在SPL系统中变得更具挑战性。这些意外行为是由可变性故障引起的,这些故障只能在系统功能的某些组合下暴露。虽然在不可配置的代码中的错误定位已被深入研究,在SPL系统中的可变性故障定位仍然是大多未被探索。为了应对这一挑战,我们提出了一个基准的可变性故障定位与一大套1,570错误版本的六SPL系统和基线可变性故障定位性能的结果。我们的希望是让社区提出新的和更好的方法来解决SPL系统中的可变性故障定位问题。
2021-09-21 cs.SE
Towards Assessing Deep Learning Test Input Generators
Polytechnique Montreal(蒙特利尔理工学院);Concordia University(康考迪亚大学)
本文系统评估了DeepHunter、DeepFault、AdvGAN和SinVAD四种深度学习测试输入生成器在故障揭示能力、自然性、多样性和效率上的表现,揭示了其在不同复杂度数据集上的权衡,并为实际选择提供指导。
2025-04-07 cs.CV cs.LG cs.SE
FauxPy: A Fault Localization Tool for Python
本文提出FauxPy,一个支持七种错误定位技术、兼容Pytest等框架的Python开源错误定位工具,并验证了其在135个真实错误上的适用性。
2024-04-29 cs.SE
Can Automated Program Repair Refine Fault Localization?
软件缺陷在现代软件系统中普遍存在,并且众所周知难以手动调试。因此,大量的研究工作一直致力于自动化软件调试,包括自动故障定位和程序修复。然而,现有的故障定位技术通常是无效的,即使是最先进的程序修复技术,也只能修复一小部分真实世界的错误。虽然故障定位和程序修复是内在联系的,但我们观察到,在文献中,它们唯一的联系是程序修复技术通常使用现成的故障定位技术(例如,Ochiai)来确定用于修补的潜在候选语句/元素。在这项工作中,我们探索他们在另一个方向的联系,即,程序修复是否反过来有助于故障定位?通过这种方式,我们不仅为更强大的故障定位开辟了一个新的维度,而且将程序修复的应用范围扩展到所有可能的错误(而不仅仅是可以直接自动修复的错误)。我们设计了ProFL,一种简单的方法,使用补丁执行结果(来自程序修复)作为故障定位的反馈信息。在广泛使用的Defects 4J基准上的实验结果表明,基本的ProFL已经可以在Top-1内定位395个研究错误中的161个,而最先进的基于频谱和突变的故障定位技术最多在Top-1内定位117个。我们还证明了ProFL在不同设置下的有效性。最后,我们表明,ProFL可以通过无监督和监督学习进一步提高最先进的故障定位。
2019-10-03 cs.SE
Fault Localization in Cloud using Centrality Measures
故障定位是分布式环境中容错的一种必要方法,它设计了一个蓝图,即使一个或多个模块不起作用,也能继续进行中的过程。将分布式环境可视化为图,其节点表示故障(故障图),允许我们将概率权重引入到导致故障的边缘和节点。随着数据库,运行时云等多个模块组成分布式环境和广泛的云环境,我们的目标是通过修改特定于故障图的局部化和中心化的图优化方法来解决在分布式环境中最佳和准确地执行故障定位的问题。
2021-09-23 cs.DC cs.SE cs.SI
Automated Fault Localization Using Potential Invariants
我们提出了一个通用的方法,故障定位的基础上抽象的程序痕迹,和一个工具,实现该方法使用恩斯特的概念潜在的不变量。到目前为止,我们的实验是不令人满意的,这表明在不变量可以用来定位故障之前,需要进一步的研究。
2003-10-18 cs.SE
FPA-FL: Incorporating Static Fault-proneness Analysis into Statistical Fault Localization
尽管在自动故障定位的统计方法的适用性证明,这些方法是有偏见的程序的不同执行收集的数据。这种偏倚可能导致不稳定的统计模型,该模型可能会因程序试验执行所提供的测试数据而异。针对这一问题,本文提出了一种基于弹性网络回归的故障倾向性统计方法,即FPA-FL。FPA-FL的主要思想是考虑程序语句的静态结构和错误倾向,以及它们与程序终止状态的动态相关性。FPA-FL的分组效应有助于发现多个故障并支持可扩展性。为了提供失败的上下文,程序故障的因果链被发现。FPA-FL是从不同的角度对著名的测试套件进行评估。结果表明,高故障定位性能,我们的方法相比,在文献中的类似技术。
2017-12-09 cs.SE
FLACOCO: Fault Localization for Java based on Industry-grade Coverage
故障定位是调试过程中必不可少的一步。基于频谱的故障定位(SBFL)是一种流行的故障定位技术,利用代码覆盖率来预测可疑的代码行。在本文中,我们提出了FLACOCO,一个新的故障定位工具的Java。FLACOCO的主要新颖之处在于它是建立在Java最常用和最可靠的覆盖库之一JaCoCo之上的。FLACOCO通过精心设计的命令行界面和Java API提供,并支持所有Java版本。我们验证FLACOCO的两个用例,从自动程序修复域复制以前的科学实验。我们发现它能够有效地取代最先进的FL库。总的来说,我们希望FLACOCO将有助于故障定位的研究以及行业采用,这要归功于它建立在行业级代码覆盖率的基础上。有关介绍性视频,请访问https://youtu.be/RFRyvQuwRYA
2023-03-16 cs.SE
Exception-Driven Fault Localization for Automated Program Repair
自动程序修复(APR)技术通常利用基于频谱的故障定位(SBFL)来识别应当被修补的程序位置,使得APR技术的有效性取决于故障定位的有效性。事实上,结果表明,SBFL往往不本地化故障准确,阻碍了有效性的APR。在本文中,我们提出了EXCEPT,一种技术,解决本地化问题,专注于语义的失败,而不是执行语句和失败的测试之间的相关性,SBFL。我们专注于故障由于异常,我们利用他们的类型和来源定位和猜测故障。对Defects4J基准测试中的43个异常引发错误的实验表明,EXCEPT的性能优于Ochiai和ssFix。
2022-01-03 cs.SE
Towards Fault Localization via Probabilistic Software Modeling
软件测试帮助开发人员识别bug。然而,意识到bug只是第一步。找到并纠正错误的程序组件对于高质量的软件来说同样困难和必要。错误定位自动地精确定位程序中现有的错误。这是一个难题,现有的方法还不够精确,无法在工业上广泛采用。我们建议通过概率软件建模(PSM)的故障定位。PSM分析程序的结构和行为,并综合概率模型(PM)的网络。每个PM用它的输入和输出对方法进行建模,并且能够评估运行时数据的可能性。我们使用这种可能性评估,以找到故障位置及其对相关代码元素的影响。结果表明,PSM是一个强大的框架,准确的故障定位。
2020-03-04 cs.SE
Design and Analysis of Novel Kernel Measure for Software Fault Localization
软件故障定位问题可以被视为一种在现有程序代码中发现隐藏故障或错误的方法,这些程序代码在语法上正确,并为某些输入实例提供无故障输出,但对所有其他输入实例失败。一些原因包括逻辑错误、对规范的错误解释、编码错误。在编译器的帮助下,有时找不到这样的错误。这就说明了软件故障定位的必要性和重要性。这项工作的主要贡献是首先引入块命中-未命中函数,该函数将软件代码的执行序列的块向量与执行的样本运行和表示无故障或无错误输出的决策向量相关联。该算法将块向量和决策向量作为输入向量,采用相似性度量,将相似性最大的一对作为故障块。
2016-05-06 cs.SE
Fault Localization for Java Programs using Probabilistic Program Dependence Graph
故障定位是一个寻找故障位置的过程。它确定故障的根本原因。它识别出错误程序的异常行为的原因。它能准确地识别出虫子在哪里。现有的故障定位技术主要有基于切片的技术、基于程序谱的技术、基于统计的技术、基于程序状态的技术、基于机器学习的技术和基于相似性的技术。在所提出的方法中,使用基于模型的故障定位技术,它被称为概率程序依赖图。ProbabilityProgram Dependence Graph(PPDG)是一个创新的模型,它可以扫描项目的内部行为。程序依赖图(PDG)增强了PPDG的构造。PDG是通过控制流图(CFG)来实现的。PPDG构造增强了由程序依赖图表示的结构依赖,其中节点状态之间的统计依赖的估计是从测试集计算的。PPDG是建立在概率图形模型框架的基础上的。这项工作提出了构建PPDG和应用故障定位的算法。
2012-01-19 cs.SE
Effective Fault Localization using Probabilistic and Grouping Approach
本研究针对程序调试中的故障定位问题,结合条件概率统计与分组优化方法提出CGFL技术,在11个开源数据集上验证表明其比主流方法有效性平均提升24.56%。
2024-03-08 cs.SE
Demystifying Faulty Code with LLM: Step-by-Step Reasoning for Explainable Fault Localization
本研究提出FuseFL,利用LLM结合频谱故障定位、测试执行结果和代码描述进行逐步推理,实现可解释故障定位,Top-1定位成功率提升超30%,并在人工评估中表现良好。
2024-03-15 cs.SE
CharmFL: A Fault Localization Tool for Python
故障定位是软件调试中最耗时、最容易出错的部分之一。有几种工具可以帮助开发人员进行故障定位过程,但是,它们主要针对用Java和C/C++程序设计语言编写的程序。虽然这些工具本身就很出色,但我们不能忽视Python是一种流行的程序设计语言的事实,仍然缺乏易于使用和方便的Python开发人员故障定位工具。在本文中,我们提出了一个名为“CharmFL”的软件故障定位工具作为PyCharm IDE的插件。该工具采用基于频谱的故障定位(SBFL)来帮助Python开发人员自动分析他们的程序,并在运行时生成有用的数据,然后生成潜在故障程序元素的排名列表(即,语句、函数和类)。因此,我们提出的工具支持不同的代码覆盖类型的可能性,以调查这些类型的分层方法。我们的工具的适用性已通过使用一组实验用例。结果表明,我们的工具可以帮助开发人员有效地找到不同类型的错误在他们的程序中的位置。
2021-08-27 cs.SE
Probabilistic Failure Analysis in Model Validation & Verification
University of Toulouse(图卢兹大学);IRIT(法国图卢兹计算机科学研究所);INPT(国立图卢兹综合理工学院)
自动故障定位是模型确认和验证中的一个重要问题。它帮助最终用户分析故障的根源。在这项工作中,我们展示了故障定位的概率分析方法的早期实验。受贝叶斯概率论中Kullback-Leibler分歧的启发,提出了一种可疑因子来计算模型检验可达图中变迁的故障贡献,并利用该因子对潜在故障变迁进行排序.为了在详细设计的仿真模型中自动定位设计故障,我们提出使用统计模型隐马尔可夫模型(HMM),它提供了统计上相同的信息,以组件的真实行为。该方法的核心是故障定位算法和后向算法,前者给出了一组经过排序的可疑故障元件,后者计算HMM与仿真模型的匹配度来评估定位结论的置信度。
2016-11-18 cs.LG cs.SE
Improving Spectrum-Based Localization of Multiple Faults by Iterative Test Suite Reduction
本文提出FLITSR方法,通过迭代缩减测试套件改进SBFL在多故障场景下的定位能力,实验表明其能显著减少浪费工作量并提升精确率与召回率。
2023-06-16 cs.SE
An Empirical Study of Fault Localization in Python Programs
本文首次对真实 Python 程序开展多系列大规模故障定位实证研究,基于 BugsInPy 的 135 个故障评估七类技术,并通过 FauxPy 工具复现和比较 Java 相关结论。
2024-03-20 cs.SE
Fault Localization for Buggy Deep Learning Framework Conversions in Image Recognition
University of Edinburgh(爱丁堡大学);University of Glasgow(格拉斯哥大学)
本文针对深度学习框架转换易出错的问题,提出了一种基于转换工具、参数、超参数和图表示四阶段分析的故障定位与修复方法,并在 Apache TVM 上成功检测并修复了 InceptionV3 模型转换中的精度误差,将转换错误降至零。
2024-03-25 cs.CV cs.LG cs.SE
Configuration-dependent Fault Localization
在一个有缺陷的可配置系统中,由于功能之间的意外交互,依赖于配置的缺陷只会在某些配置中导致失败。由于可配置系统的复杂性,手动定位可配置系统中的配置相关故障可能非常耗时。然而,现有的自动化故障定位技术并没有考虑到与配置相关的错误的原因,这些技术被设计用于定位不可配置代码中的错误。因此,它们的有效配置相关定位的能力是有限的。在这项工作中,我们提出了CoFL,一种新的方法来本地化配置相关的错误,通过识别和分析可疑的功能相互作用,可能会导致故障的可配置系统的错误。我们评估了CoFL在高度可配置系统中人工配置相关故障的故障定位中的效率。我们发现,CoFL显着改善了基线频谱为基础的方法。使用CoFL,平均而言,对错误语句进行排名的正确性提高了7倍以上,搜索空间显著缩小了约15倍。
2019-11-18 cs.SE
FetaFix: Automatic Fault Localization and Repair of Deep Learning Model Conversions
University of Edinburgh(爱丁堡大学);University of Glasgow(格拉斯哥大学)
本文提出自动化故障定位与修复方法 FetaFix,通过迭代比较源模型与目标模型的输出标签差异,修复深度学习框架间模型转换时在输入、参数、超参数和模型图中引入的故障,在 755 个故障中成功修复 462 个。
2025-04-26 cs.AI cs.CV cs.LG
On Applying Bandit Algorithm to Fault Localization Techniques
针对调试前只能静态选择单一故障定位技术的局限,本文提出利用 Bandit 算法在调试过程中动态选择更优 FL 技术的方法。
2024-09-10 cs.SE
FPA-Debug: Effective Statistical Fault Localization Considering Fault-proneness Analysis
其目的是识别出对程序失败有很大影响的错误谓词。统计调试技术是查明程序源代码中缺陷的最佳方法之一。然而,它们有一些缺点。它们需要大量的执行来识别错误,它们可能会受到巧合正确性的不利影响,并且它们在构建行为模型时不考虑与程序代码的不同部分相关的错误倾向。此外,它们没有考虑谓词对程序终止状态的同时影响。针对上述问题,本文提出了一种基于弹性网络回归的故障倾向性感知方法,即FPA-SVM。FPA-RESISTANCE采用基于聚类的策略来减轻故障定位中的巧合正确性,并找到被称为错误预测器的程序谓词的最小有效子集。此外,该方法通过根据程序谓词在程序源代码中的位置对每个程序谓词应用不同的正则化参数来考虑统计建模过程中代码的易出错性。在著名的西门子测试套件上的实验结果表明了该方法的有效性和准确性。
2016-12-17 cs.SE
Variable-Based Fault Localization via Enhanced Decision Tree
故障定位是一个长期存在的研究课题,其目的是定位缺陷修复的根本原因。虽然在过去的几十年里已经提出了许多方法,大多数现有的研究工作在粗粒度的语句或方法的水平非常有限的见解如何修复错误(粒度问题),但很少有研究针对细粒度的故障定位。本文针对粒度问题,提出了一种新的更细粒度的变级别故障定位技术。具体而言,我们设计了一个程序依赖增强的决策树模型,以提高识别故障相关的变量,通过区分失败和通过测试用例的变量值的基础上。为了评估我们的方法的有效性,我们在一个名为VARDT的工具中实现了它,并对Defects 4J基准进行了广泛的研究。结果表明,VARDT优于国家的最先进的故障定位方法,至少有247.8%的改善方面的错误位于Top-1,平均改善330.5%。此外,为了研究我们的细粒度故障定位结果是否可以进一步提高下游APR技术的有效性,我们将VARDT应用于补丁滤波,其中VARDT通过过滤26.0%以上的不正确补丁而优于最先进的PATCH-SIM。实验结果证明了该方法的有效性,同时也为改进程序自动修复技术提供了一种新的思路。
2022-11-21 cs.SE
FLIMs: Fault Localization Interference Mutants, Definition, Recognition and Mitigation
本文提出MBFL-FLIM框架,通过识别和缓解干扰突变体提升故障定位效果,实验证明其在多故障场景中表现优异。
2025-11-28 cs.SE
How do Execution Features Improve Statistical Fault Localization? An Empirical Study
CISPA Helmholtz Center for Information Security(CISPA 亥姆霍兹信息安全中心)
本研究通过提取执行特征并融入统计故障定位(SFL)公式,评估其对定位精度和开发者检查效率的提升,实验表明该方法在多项指标上优于传统SFL。
2026-06-29 cs.SE
Fault Localization in Multi-Threaded C Programs using Bounded Model Checking (extended version)
软件调试是一个非常耗时的过程,对于多线程程序来说,由于线程调度算法的不确定性行为,这一过程甚至更糟。然而,如果使用自动方法来定位故障,则可以大大减少调试时间。在这项研究中,提出了一种新的方法,故障定位,在多线程的C程序。它将多线程程序转换为相应的顺序程序,然后使用适合于这类程序的故障诊断方法,以定位故障。代码转换是用来自反例的规则和上下文切换信息实现的,反例通常由有界模型检查器生成。实验结果表明,该方法是有效的,在这样一种方式,顺序故障定位方法可以扩展到多线程程序。
2015-09-08 cs.LO cs.SE
Fault Localization Models in Debugging
可重用性被认为是软件工程过程的一个严格而重要的特征。十多年来,软件工程研究界一直在探索各种消除程序错误的技术,但要克服软件程序的所有错误是相当困难的。因此,它仍然是一个真正的挑战,软件调试和维护社区。本文首先简要介绍了软件异常和故障的分类,然后用诊断理论解释了不同的故障定位模型。此外,我们根据不同的实际错误行为,比较和对比基于值和依赖关系的模型,并提出了一些洞察信息的调试过程。最后,对两种模型的结果进行了讨论,指出了两种模型在调试和维护方面的优缺点。
2018-02-13 cs.SE
A Hybrid Approach to Fine-grained Automated Fault Localization
错误定位是指识别错误的源代码。它可以在各种粒度上完成,例如,类、方法和语句。大多数自动故障定位(AFL)方法是粗粒度的,因为准确定位细粒度的故障软件元素是具有挑战性的,例如,报表SBFL仅基于测试用例的动态执行,简单、直观、通用(适用于各种粒度)。然而,其准确性值得大大提高。为此,在本文中,我们提出了一个混合的细粒度AFL方法的基础上,动态频谱和静态语句类型。该方法的基本原理是,某些类型的语句比其他语句更容易/更不容易出错,因此可以利用语句类型进行故障定位。在一个作物的错误程序,我们计算每种类型的语句的错误倾向,并分配优先级的特殊语句类型是稳定的更多/更少的错误倾向于比其他。对于一个给定的故障测试程序,我们首先利用传统的基于频谱的故障定位算法来识别所有可疑语句,并计算其可疑分数。对于每个可疑语句,我们检索其语句类型以及与该类型相关联的特殊优先级。最终的可疑分数是SBFL可疑分数和分配给语句类型的优先级的乘积。该方法的一个显著优点是它简单直观,使其高效且易于解释/实施。我们广泛使用的基准缺陷4J评估所提出的方法。评估结果表明,所提出的方法优于广泛使用的SBFL,平均减少9.3%的绝对浪费努力(AWE)。
2021-07-20 cs.SE
SBEST: Spectrum-Based Fault Localization Without Fault-Triggering Tests
本研究提出SBEST方法,利用崩溃报告中的堆栈跟踪替代缺失的故障触发测试,结合测试覆盖数据进行故障定位,在Defects4J上使MAP提升32.22%,MRR提升17.43%。
2025-10-27 cs.SE
SmartFL: Semantics Based Probabilistic Fault Localization
本文提出SmartFL,一种基于语义的概率故障定位方法,通过仅建模程序值的正确性而非完整语义,在有效性和可扩展性间取得平衡,在Defects4J 2.0上比现有SBFL和MBFL方法提升130%且时间减半。
2025-04-03 cs.SE
Where's the Bug? Attention Probing for Scalable Fault Localization
University of Pennsylvania(宾夕法尼亚大学)
本文提出无定位标签的注意力探测方法 BAP,通过学习模型注意力实现可扩展故障定位,在八个数据集上显著优于传统基线、GPT-4o 零样本提示及大型开放权重模型。
2025-02-20 cs.LG cs.SE
Similar Pattern Annotation via Retrieval Knowledge for LLM-Based Test Code Fault Localization
University of Ottawa(渥太华大学);Research Ireland Lero Centre, University of Limerick(利默里克大学LERO研究中心);Huawei Technologies Co., Ltd.(华为技术有限公司)
本文提出SPARK框架,通过整合CI环境积累的调试知识,提升LLM在测试代码故障定位中的效率,实验表明其在复杂测试用例中能更准确识别故障位置。
2026-05-08 cs.SE
Critical Review of BugSwarm for Fault Localization and Program Repair
基准测试在评估解决方案的效率和有效性以自动化软件开发生命周期的几个阶段方面发挥着重要作用。此外,如果设计得好,它们也可以作为一个重要的人工制品来比较不同的方法。BugSwarm是最近发布的一个基准测试,其中包含3,091对失败和通过的持续集成构建。根据作者的说法,基准测试的设计考虑到了自动程序修复和故障定位社区。鉴于针对这些社区的基准应该具有几个特征(例如,一个错误的声明需要存在),我们已经剖析了基准,以充分了解基准是否适合这些社区。我们的批判性分析发现,在基准测试中有几个限制:只有112/3,091(3.6%)适合评估自动故障定位或程序修复技术。
2019-05-22 cs.SE
A Multi-Agent Approach to Fault Localization via Graph-Based Retrieval and Reflexion
针对LLM故障定位中的token限制、长输入退化和可扩展性问题,提出三智能体LLM4FL框架,结合覆盖率分割、图检索导航与言语强化反思,在Defects4J上显著提升Top-1准确率。
2025-03-19 cs.SE
FairFLRep: Fairness aware fault localization and repair of Deep Neural Networks
Polytechnique Montréal(蒙特利尔理工学院);National Institute of Informatics(日本国立信息学研究所)
本文提出FairFLRep,一种感知公平性的DNN故障定位与修复技术,通过分析网络输入输出关系调整与敏感属性相关的神经元权重,在保持准确性的同时有效提升模型公平性。
2025-08-11 cs.LG cs.SE
Improving Fault Localization by Integrating Value and Predicate Based Causal Inference Techniques
统计故障定位(SFL)技术使用来自软件执行的执行简档和成功/失败信息,结合统计推断,基于程序元素有多可能出错来自动对它们进行评分。SFL技术通常采用一种类型的配置文件数据:覆盖数据,谓词结果或变量值。大多数SFL技术实际上测量的是配置文件值与成功/失败之间的相关性,而不是因果关系,因此它们会受到混淆偏差的影响,从而扭曲了它们产生的分数。本文提出了一种新的SFL技术,命名为\emph{UniVal},它使用因果推理技术和机器学习整合谓词结果和变量值的信息,以更准确地估计真正的失败导致的程序语句的影响。\emph{UniVal}经验比较几个覆盖为基础的,基于谓词的,基于值的SFL技术上的800个程序版本与真正的故障。
2021-02-11 cs.SE
Kernel-based Detection of Coincidentally Correct Test Cases to Improve Fault Localization Effectiveness
虽然实证研究已经证实了基于频谱的故障定位(SBFL)技术的有效性,它们的性能可能会下降,由于存在一些不希望的情况下,如巧合的正确性(CC)的存在,其中一个或多个通过测试的情况下,行使一个错误的语句,从而导致一些混乱,以决定是否行使的语句是错误的或没有。本文旨在通过减轻CC测试用例的影响来提高SBFL的有效性。在这方面,提出了一种新的方法,该方法使用具有定制核函数的支持向量机(SVM)。为了构建内核函数,我们应用了一种新的序列匹配算法,该算法可以测量通过和失败执行之间的相似性。我们进行了一些实验来评估所提出的方法。实验结果表明,该方法可以有效地提高SBFL技术的性能。
2018-03-25 cs.SE
Exploring the Potential and Limitations of Large Language Models for Novice Program Fault Localization
本文评估了LLM在初级程序员故障定位中的性能,发现高级模型在准确性上表现优异,但存在推理过度和计算成本高等问题。
2025-12-03 cs.SE
Software Fault Localization Based on Multi-objective Feature Fusion and Deep Learning
针对传统软件故障定位方法特征多样性有限、精度低的问题,本文提出融合多目标特征选择与深度学习的新方法,通过提取三类故障特征并结合MLP和GRN模型,在Defects4J和PROMISE数据集上显著提升定位准确性、效率与泛化性。
2024-11-26 cs.SE
Using Evolutionary Coupling to Establish Relevance Links Between Tests and Code Units. A case study on fault localization
许多软件工程技术,例如故障定位,都是基于测试和代码之间的相关关系来操作的。这些关系通常是通过使用动态测试执行信息(测试执行跟踪)来推断的,这些信息近似于相关代码单元之间的联系,并由测试断言程序行为。不幸的是,在实践中,动态信息并不总是可用的,由于仪器或生产环境的性质引入的开销。为了解决这个问题,我们提出了CEMENT,这是一种静态技术,它可以自动推断出项目发展过程中的测试和代码关系。关键思想是开发人员在同一时间段内对测试和代码单元进行相关更改,即,测试和代码单元的共同进化反映了它们之间可能的联系。我们在15个开源项目上评估了CEMENT,并表明它确实捕获了相关链接。此外,我们进行了故障定位的案例研究,我们比较水泥与现有的信息检索为基础的故障定位(IRFL)技术,并表明它达到了相当的性能。我们的结果的进一步分析表明,成功定位的两种方法,建议互补性的故障之间的小重叠。特别是,在39个成功定位的故障中,两个是常见的,而CEMENT和IRFL定位16和21。这些结果表明,测试和代码的进化耦合可以有效地支持测试和调试活动。
2022-03-21 cs.SE
Explainable Fault Localization for Programming Assignments via LLM-Guided Annotation
本文提出 FLAME,通过 LLM 解释性代码标注与加权多模型投票实现编程作业的细粒度可解释故障定位,top-1 多定位 207 个故障,并在 Defects4J 上优于基线。
2025-09-30 cs.SE
Spectrum-based Software Fault Localization: A Survey of Techniques, Advances, and Challenges
尽管调试是软件开发中最基本的任务之一,但仍然以大多数手动方式执行,导致高成本和低性能。为了解决这个问题,研究人员已经研究了一些有前途的方法,例如基于频谱的故障定位(SFL)技术,该技术可以精确定位更有可能包含故障的程序元素。本调查讨论了SFL的最新技术,包括已提出的不同技术,它们解决的故障类型和数量,它们使用的光谱类型,它们在验证中使用的程序,支持它们的测试数据以及它们在工业环境中的使用。尽管取得了这些进展,但该行业在采用这些技术方面仍面临挑战,我们在本文中对此进行了分析。SFL技术应该提出新的方法来生成可疑实体的精简集,结合不同的频谱来微调故障定位能力,使用策略来收集细粒度的覆盖水平,从可疑的粗水平,以平衡执行成本和输出精度,并提出新的技术,以应付多故障程序。此外,需要更多的用户研究,以更好地了解如何SFL技术可以在实践中使用。最后,我们提出了一个概念图的主题和未来的研究在SFL的挑战。
2017-11-26 cs.SE
ConDefects: A New Dataset to Address the Data Leakage Concern for LLM-based Fault Localization and Program Repair
Beijing University of Chemical Technology(北京化工大学)
针对LLM错误定位与程序修复中数据泄露问题,提出新数据集ConDefects,含2021-2023年AtCoder的Java/Python真实错误程序,并配对错误位置与修复版本,以支持更可靠的基准测试。
2023-10-25 cs.AI cs.SE
FLACK: Counterexample-Guided Fault Localization for Alloy Models
错误定位是一个实用的研究课题,它可以帮助开发人员识别可能导致程序错误的代码位置。大多数现有的故障定位技术是为命令式程序(例如,C和Java),并依靠分析程序的正确和不正确执行来识别可疑语句。在这项工作中,我们为用声明性语言编写的模型引入了一种故障定位方法,其中模型不是“执行”,而是转换为逻辑公式并使用后端约束求解器求解。我们提出了FLACK,一个工具,作为输入的合金模型组成的一些违反断言,并返回一个排名列表的可疑表达式有助于违反断言。关键思想是分析反例之间的差异,即,不满足断言的模型实例以及满足断言的实例,以在输入模型中查找可疑表达式。实验结果表明,FLACK是高效的(可以在5秒内处理复杂的,真实世界的Alloy模型,具有数千行代码),准确的(可以始终将错误表达式排在可疑列表的前1.9%),并且有用(通常可以将错误缩小到可疑表达式中的确切位置)。
2021-02-19 cs.SE
CFaults: Model-Based Diagnosis for Fault Localization in C Programs with Multiple Test Cases
INESC-ID, IST, Universidade de Lisboa, Portugal(葡萄牙里斯本大学、IST、INESC-ID)
针对现有基于公式的故障定位方法存在多测试下诊断不一致、易生成冗余结果的问题,本文提出CFaults方法,结合多观测MBD与统一MaxSAT公式实现多故障C程序定位,实验证明其速度更快且仅生成子集最小诊断。
2025-09-05 cs.AI cs.LO cs.SE