Practical Program Repair via Bytecode Mutation
软件调试本身是乏味的、耗时的,甚至容易出错。因此,在文献中已经提出了各种自动化调试技术来促进调试过程。自动程序修复(APR)是自动调试的最新进展之一,它可以直接为有缺陷的程序生成补丁,只需最少的人为干预。尽管已经提出了各种先进的APR技术(包括基于搜索或基于语义的技术),但是简单化的基于变异的APR技术,其简单地使用预定义的变异算子(例如,将a>=b改变为a>b)来改变程序以寻找补丁,还没有被彻底研究。在本文中,我们实现了第一个实用的字节码级APR技术,PraPR,并提出了第一个关于修复现实世界错误的广泛研究(例如,defects4J bugs)使用字节码突变。实验结果表明,令人惊讶的是,即使只有基本的传统突变体的PraPR也可以为18个错误生成真正的补丁。此外,使用我们的增强突变器,PraPR能够为43个错误生成真正的补丁,显著优于最先进的APR。它也快了一个数量级,表明基于字节码突变的APR有着光明的未来。
2018-07-10 cs.SE
BugSpotter: Automated Generation of Code Debugging Exercises
MPI-SWS(马克斯·普朗克软件系统研究所);University of Auckland(奥克兰大学)
BugSpotter利用大语言模型自动生成带错误的代码调试练习,并通过课堂对比验证其与人工出题效果相当,为编程教学提供高效辅助。
2024-11-25 cs.AI cs.SE
UniDebugger: Hierarchical Multi-Agent Framework for Unified Software Debugging
The Chinese University of Hong Kong(香港中文大学);University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);The Chinese University of Hong Kong, Shenzhen(香港中文大学(深圳))
针对现有大模型调试方法聚焦孤立步骤、难处理复杂缺陷的问题,提出层级多智能体端到端框架FixAgent模拟开发者调试认知流程,在Defects4J基准上修复缺陷数达SOTA方法的1.25-2.56倍,且无需真实根因信息。
2025-11-18 cs.SE
Bug Characteristics in Quantum Software Ecosystem
随着近年来量子计算的发展,量子软件对于探索量子计算系统的全部潜力至关重要。量子编程不同于经典编程,例如,量子程序的状态本质上是概率性的,并且由于量子机制的不稳定性,量子计算机容易出错。因此,量子软件项目中的bug的特征可能与经典软件项目中的bug有很大不同。这项工作旨在了解量子软件项目中错误的特征,以便提供见解,帮助设计有效的测试和调试机制。为了实现这一目标,我们对125个量子软件项目的错误报告进行了实证研究。我们观察到量子软件项目比经典软件项目更容易出错,并且量子项目的错误比经典项目的错误修复成本更高。我们还确定了错误的类型和它们发生的量子编程组件。我们的研究表明,错误分布在不同的组件中,但量子特定的错误特别出现在编译器,门操作和状态准备组件中。最常见的三种错误类型是程序异常错误、配置错误和数据类型和结构错误。我们的研究强调了量子软件开发中一些特别具有挑战性的领域,例如缺乏科学的量子计算库来实现量子计算的综合数学函数。量子开发人员还寻求专门的量子软件工程数据操作库,如量子计算的Numpy。我们的研究结果还为未来的工作提供了见解,以推进量子软件的量子程序开发,测试和调试,例如为调试低级电路提供工具支持。
2022-04-25 cs.SE
CircInspect: Integrating Visual Circuit Analysis, Abstraction, and Real-Time Development in Quantum Debugging
本文提出 CircInspect,一款面向 Python 与 PennyLane 量子程序的交互式调试工具,通过断点、实时开发、线路可视化和信息抽象帮助开发者理解并排查量子软件。
2025-09-04 cs.SE
Bugs4Q: A Benchmark of Real Bugs for Quantum Programs
可重现错误和修复的实际基准对于调试和测试方法的良好实验评估至关重要。然而,到目前为止,还没有合适的基准测试套件可以系统地评估量子程序的调试和测试方法。本文提出了Bugs4Q,一个基准的36个真实的,手动验证Qiskit错误从四个流行的Qiskit元素(Terra,Aer,Awis,和Aqua),补充测试用例再现错误的行为。Bugs4Q还提供了访问Qiskit程序的错误版本和修复版本以及执行相应测试用例的接口,便于对Qiskit程序调试和测试工具进行可重复的实证研究和比较。Bugs4Q可在https://github.com/Z-928/Bugs4Q上公开获取。
2021-09-20 cs.PL cs.SE
Debugging Behaviour of Embedded-Software Developers: An Exploratory Study
许多研究人员研究了成功的开发人员在调试桌面软件时的行为。在本文中,我们调查嵌入式软件调试的中级程序员通过探索性研究。这些错误是语义上的低级错误,参与者是完成了实时操作系统课程以及其他五门编程课程的学生。我们比较成功的调试尝试与不成功的行为。我们描述了一些平稳和成功的调试行为的特点。
2017-04-11 cs.SE
Precise Debugging Benchmark: Is Your Model Debugging or Regenerating?
University of Southern California(南加州大学);Microsoft(微软);University of Wisconsin–Madison(威斯康星大学麦迪逊分校);University of Toronto(多伦多大学)
本文提出PDB基准,评估LLM调试能力,发现前沿模型调试精度低,即使受指令引导也难以达到高精度。
2026-10-06 cs.CL cs.SE
How to Debug Inclusivity Bugs? A Debugging Process with Information Architecture
尽管之前的一些研究已经找到了找到包容性错误(软件中引入不平等的偏见)的方法,但很少有人关注如何修复这些错误。如果没有一个从查找到修复的过程,那么根据这些发现采取行动就是一种特别的活动,取决于每个开发人员的技能。为了解决这个问题,我们创建了Why/Where/Fix,这是一个系统的包容性调试过程,其包容性故障定位利用了信息架构(IA)-面向用户的信息的组织,结构和标记方式。然后,我们进行了多阶段的定性实证评估的有效性,为什么/在哪里/修复,使用开源软件(OSS)项目的基础设施作为我们的设置。在我们的研究中,OSS项目团队使用Why/Where/Fix流程来发现包容性错误,定位其背后的IA错误,然后修复IA以删除他们发现的包容性错误。我们的结果表明,使用Why/Where/Fix将OSS新参与者经历的包容性错误数量减少了90%。
2022-02-27 cs.CY cs.HC cs.SE
Can You Mimic Me? Exploring the Use of Android Record & Replay Tools in Debugging
本文对 Android 记录与重放(R&R)工具在记录和重放非崩溃故障、崩溃 bug 及用户场景中的表现进行了全面实证研究,发现 17% 的场景、38% 的非崩溃 bug 和 44% 的崩溃 bug 无法可靠记录与重放,并指出了未来的改进方向。
2025-04-28 cs.SE
Toward Understanding Deep Learning Framework Bugs
本研究通过对四个主流DL框架的1000个缺陷进行大规模分析,揭示了缺陷特征,提出了改进检测与调试的指南,并开发了有效工具TenFuzz,发现3个新缺陷。
2024-08-21 cs.SE
A Proposal for a Debugging Learning Support Environment for Undergraduate Students Majoring in Computer Science
本研究针对计算机专业本科生调试学习机会有限的问题,在Scratch中实现了断点放置与系统化调试的自学功能,并通过实验验证了其学习效果。
2024-07-25 cs.SE
Toward a Unified Framework for Debugging Concept-based Models
University of Trento(特伦托大学);Jilin University(吉林大学)
在本文中,我们解决了“灰盒”的概念为基础的模型(CBM)的交互式调试。这些模型学习输入中出现的任务相关概念,然后通过聚合概念激活来计算预测。我们的工作源于这样的观察,在建立信任措施的概念和聚合功能可以受到不同种类的错误,修复这些错误需要不同种类的纠正监督。为此,我们引入了一个简单的模式,人类主管,以确定和优先级的错误在这两个组件,并讨论解决方案的策略和开放的问题。我们还引入了一个新的损失函数调试的聚合步骤,概括了现有的策略,使他们强大的概念如何在训练过程中的变化,黑盒模型的CBM对齐。
2022-02-17 cs.LG cs.SE
Locating Buggy Segments in Quantum Program Debugging
本文首次针对量子程序调试提出考虑程序段位置依赖测试成本及统计测试精度-成本权衡特性的缺陷定位方法,实验证明其能有效降低以量子门执行数衡量的定位成本。
2024-01-15 cs.SE
An experience-based classification of quantum bugs in quantum software
本研究针对量子软件调试缺乏成熟指导的问题,基于开发经验与开源仓库分析梳理14类量子bug,发现其多由多层面因素共同作用导致,且调试策略与bug类别无明确关联,为后续量子调试研究提供了参考。
2025-09-03 cs.SE quant-ph
HLSDebugger: Identification and Correction of Logic Bugs in HLS Code with LLM Solutions
Hong Kong University of Science and Technology(香港科学与技术大学)
针对HLS代码调试难度大、训练数据稀缺等问题,本研究提出HLSDebugger方案,发布30万条标注数据集,采用单编码器-解码器模型完成多任务调试,性能显著优于先进LLM。
2025-07-29 cs.AI cs.SE
DREAM: Debugging and Repairing AutoML Pipelines
University of Massachusetts(马萨诸塞大学)
本文针对AutoML系统中存在的性能漏洞和无效搜索漏洞,设计并实现了自动调试与修复系统DREAM,通过监控过程收集反馈并利用扩展搜索空间及反馈驱动策略,有效高效地修复了AutoML漏洞。
2023-12-31 cs.AI cs.SE
DeepFix: Debugging and Fixing Machine Learning Workflow using Agentic AI
Technical University of Munich(慕尼黑工业大学)
本文提出DeepFix,利用代理AI框架实现机器学习全流程自动化测试,通过Deepchecks检测潜在bug并生成详尽报告,提供修复建议,支持多种ML系统并集成到开发流程中,展示如何发现传统测试无法检测的隐藏故障模式。
2026-03-14 cs.SE
Locating Faults with Program Slicing: An Empirical Analysis
统计故障定位是一种易于部署的技术,用于快速确定故障代码位置的候选者。但是,如果人类程序员必须在顶部候选位置之外搜索故障,那么沿着动态切片跟踪依赖关系的更传统的技术可能更适合。在一个大型的研究457错误(369单故障和88多故障)在46个开源C程序,我们比较了统计故障定位的有效性,对动态切片。对于单个故障,我们发现,动态切片比最佳性能的统计调试公式更有效8个百分点;对于66%的错误,动态切片比最佳性能的统计调试公式更早发现故障。在我们的评估中,动态切片是更有效的程序与单故障,但统计调试执行更好的多故障。然而,最好的结果是通过混合方法获得的:如果程序员首先从统计调试中检查最多前五个最可疑的位置,然后切换到动态切片,平均而言,他们将需要检查15%(30行)的代码。这些发现适用于18个最有效的统计调试公式,我们的结果与故障数量(即单个或多个故障)和错误类型(即人为或真实错误)无关。
2021-01-08 cs.SE
ReduKtor: How We Stopped Worrying About Bugs in Kotlin Compiler
众所周知,缺陷定位是软件工程中的一个难题,特别是在编译器开发中,将输入程序减少到最小的复制示例是有益的;这种技术通常称为delta调试。另一个问题是,每种新的程序设计语言都有自己独特的怪癖和弱点,这使得完全有效地重用现有的工具和方法几乎是不可能的。在这篇经验论文中,我们解决了delta调试问题w.r.t. Kotlin,一种来自JetBrains的相对较新的程序设计语言。我们的方法是基于程序切片,分层增量调试和Kotlin特定转换的新组合,它们相互协同。我们在一个名为ReduKtor的原型中实现了它,并对合成和真实的Kotlin程序进行了广泛的评估;我们还将其性能与经典的delta调试技术进行了比较。评估结果支持我们的Kotlin delta调试方法的实际可用性,也表明了使用语言无关和语言特定技术来实现最佳还原效率和性能的重要性。
2019-09-16 cs.PL cs.SE
Debug2Fix: Can Interactive Debugging Help Coding Agents Fix More Bugs?
Microsoft(微软)
本文提出Debug2Fix框架,通过集成交互式调试子代理,提升编码代理在bug修复中的性能,实验显示在某些模型上性能提升超过20%,并证明更好的工具设计比切换更昂贵的模型更重要。
2026-04-21 cs.AI cs.SE
Bugsplainer: Leveraging Code Structures to Explain Software Bugs with Neural Machine Translation
针对软件缺陷自动解释研究不足的问题,提出网页端调试工具Bugsplainer,利用代码结构推理缺陷,结合微调后的CodeT5模型从缺陷修复提交语料中学习,生成自然语言缺陷解释。
2023-08-23 cs.SE
Debugging Invariant Issues in Pseudo Embedded Program: an Analytical Approach
软件开发是软件开发生存周期中不可避免的一个重要环节。尤其是当它变成嵌入式的时候。由于嵌入式软件对代码大小和资源消耗的要求较低,因此在开发阶段需要不断升级,代码变化较大。这导致了在生产时将bug侵入代码的巨大风险。本文提出了一种结合不变量分析的伪格式嵌入式程序调试方法。我们的方法工作在Daikon之上,Daikon是一个流行的不变量分析器。我们已经尝试了一个简化的代码片段[1],在调试BusyBox中报告的错误时使用,BusyBox是嵌入式系统中Linux的事实标准。
2012-09-13 cs.SE
Applying CodeBERT for Automated Program Repair of Java Simple Bugs
软件调试和程序修复是软件工程中最耗时和劳动密集型的任务之一,自动化将使其受益匪浅。在本文中,我们提出了一种基于CodeBERT的新型自动程序修复方法,CodeBERT是一种基于变换器的神经架构,在大型源代码语料库上进行了预训练。我们在ManySStuBs 4J小型和大型数据集上微调我们的模型,以自动生成修复代码。结果表明,我们的技术在19-72%的情况下准确地预测了开发人员实现的固定代码,具体取决于数据集的类型,每个错误不到一秒。我们还观察到,我们的方法可以生成不同长度的修复(短和长),并可以修复不同类型的错误,即使在训练数据集中只存在这些类型的错误的几个实例。
2021-03-30 cs.SE
Cross-Ecosystem Bug Classification in Quantum Software
NIT Srinagar(印度国立技术学院斯利那加分校)
本研究对Qiskit等12个量子软件仓库的17523个缺陷开展跨生态系统比较,采用基于规则的分类框架,发现经典缺陷占比67%,所提框架在细粒度量子缺陷检测上优于机器学习基线。
2026-08-05 cs.SE
Debugging Memory Issues In Embedded Linux: A Case Study
检测表示检测程序中意外可观察行为的根本原因的过程,例如程序崩溃、产生意外输出值或断言违规。排除程序错误是一项困难的任务,并且在软件开发生存周期中经常花费大量的时间。在嵌入式软件的背景下,bug的概率相当高。由于嵌入式软件要求低代码大小和更少的资源消耗,因此通常在开发期间消除大量的健全性检查。这导致在运行时间在生产代码中发现错误的可能性很高。在本文中,我们提出了一种方法来调试BusyBox,Linux在嵌入式系统中的事实标准的错误。我们的方法工作在Valgrind,一个流行的内存错误检测器和Daikon,一个不变的分析。我们在BusyBox中实验了两个已发表的错误,并在本文中报告了我们的发现。
2012-08-02 cs.SE
Mining Bug Repositories for Multi-Fault Programs
针对 Defects4J 与 BugsInPy 多为单缺陷条目的局限,本文利用测试用例移植和故障位置转换构建保留原数据集特性的真实多故障程序数据集。
2024-04-10 cs.SE
ASAD: Adaptive Software Agents for Debugging
IReSCoMath Research Laboratory, Faculty of Sciences, University of Gabes(加贝斯大学理科学院 IReSCoMath 研究实验室);National School of Engineering, Gabes(加贝斯国立工程学院)
ASAD提出自适应智能体调试系统,根据缺陷复杂度动态配置智能体数量、角色与协作策略,在多个基准上较静态方法提升修复率12-20%,并减少32%智能体使用。
2026-10-02 cs.SE
DeepLocalize: Fault Localization for Deep Neural Networks
深度神经网络(DNN)正在成为大多数软件系统的组成部分。以前的工作表明DNN有bug。不幸的是,现有的调试技术不支持本地化DNN错误,因为缺乏对模型行为的理解。整个DNN模型显示为一个黑盒子。为了解决这些问题,我们提出了一种方法,自动确定模型是否有缺陷,并确定根本原因。我们的关键见解是,可以分析层之间传播的值的历史趋势,以识别故障,并定位故障。为此,我们首先启用深度学习应用程序的动态分析:将其转换为命令式表示,或者使用回调机制。这两种机制都允许我们插入探针,在DNN根据训练数据进行训练的同时,对DNN产生的轨迹进行动态分析。然后,我们对迹线进行动态分析,以识别导致错误的故障层。我们提出了一种算法,通过捕获任何数值错误并在训练过程中监控模型并查找DNN结果中每一层的相关性来识别根本原因。我们从Stack Overflow和GitHub收集了一个基准测试,其中包含40个错误模型和补丁,这些模型和补丁包含深度学习应用程序中的实际错误。我们的基准可以用来评估自动调试工具和修复技术。我们已经使用这个DNN bug和补丁基准测试对我们的方法进行了评估,结果表明我们的方法比实践Keras库中使用的现有调试方法有效得多。对于40个案例中的34个,我们的方法能够检测到错误,而Keras提供的最佳调试方法检测到40个错误中的32个。我们的方法能够定位40个错误中的21个,而Keras没有定位任何错误。
2021-03-04 cs.SE
A Grounded Theory of Debugging in Professional Software Engineering Practice
University of California at San Diego(加州大学圣迭戈分校)
本文通过 grounded 理论方法研究专业开发者在真实代码库中调试的策略与过程,揭示调试作为结构化迭代诊断过程的本质,为工具设计和软件工程教育提供启示。
2026-07-01 cs.SE
An Empirical Study of Refactoring Engine Bugs
本文首次系统分析了Eclipse、IntelliJ IDEA和Netbeans三种重构引擎的缺陷,按类型、症状、原因和触发条件归纳出12项发现,并在最新版本中发现130个新缺陷,为缺陷检测与调试提供指导。
2024-09-22 cs.SE
Empowering Student Debugging in Parallel Programming with Execution Traces and Large Language Models
The University of Texas at San Antonio(圣安东尼奥德州大学);The University of Massachusetts Amherst(马萨诸塞大学阿默斯特分校)
提出ParaView工具,通过执行记录与可视化帮助学生调试并发程序,结合大语言模型分析错误,实验表明调试成功率显著提升。
2026-06-15 cs.DC 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
From Code to Correctness: Closing the Last Mile of Code Generation with Hierarchical Debugging
Shanghai Jiao Tong University(上海交通大学);University of California, Davis(加州大学戴维斯分校);East China Normal University(华东师范大学);University of Pennsylvania(宾夕法尼亚大学)
本文提出MGDebugger,一种分层调试器,通过多粒度分析提升代码生成的准确性与修复效率。
2025-11-22 cs.AI cs.CL cs.PL
Tests4Py: A Benchmark for System Testing
针对现有基准测试存在系统预言机不足、单元测试稀疏的问题,研究团队推出源自BugsInPy的Tests4Py基准,含79个bug、配备功能正确性验证预言机且支持两类测试生成,可为测试生成等领域研究提供前沿评估支撑。
2024-05-14 cs.SE
Explainable Automated Debugging via Large Language Model-driven Scientific Debugging
本文提出AutoSD技术,通过大语言模型生成假设并用调试器与缺陷代码交互,使自动化调试推理对齐人类开发者,从而提供可解释的补丁生成过程,实验证明其修复效果具竞争力且能提升开发者判断准确率。
2023-04-05 cs.SE
Understanding and Supporting Debugging Workflows in Multiverse Analysis
本文针对多重宇宙分析中调试反馈滞后、元数据诊断规模大的问题,原型化 Multiverse Debugger,并通过 n=13 的定性研究揭示调试工作流挑战与系统设计启示。
2023-06-04 cs.HC cs.SE
Challenges and Practices in Quantum Software Testing and Debugging: Insights from Practitioners
William & Mary(威廉与玛丽学院)
本文探讨了量子软件测试与调试中的挑战,指出开发者多依赖经典方法,缺乏专用工具,需改进工具以适应量子开发流程。
2026-01-16 cs.SE
A Comprehensive Study of Bug Fixes in Quantum Programs
随着量子编程的发展,越来越多的量子编程语言正在开发中。因此,调试和测试量子程序变得越来越重要。虽然经典程序中的错误修复已经走过了很长的路,但在量子程序中缺乏研究。为此,本文提出了一个全面的研究量子程序中的错误修复。我们收集和调查了来自四种流行的量子编程语言Qiskit,Cirq,Q#和ProjectQ的96个真实世界的错误及其修复。我们的研究表明,量子程序中的错误有很大比例是量子特定的错误(超过80%),这需要在错误修复领域进行进一步的研究。我们还总结和扩展了量子程序中的错误模式,并对最关键的部分--数学相关错误进行了细分,使其更适用于量子程序的研究。我们的研究结果总结了量子程序中缺陷的特征,为研究量子程序的测试和调试提供了基础。
2022-01-21 cs.PL cs.SE quant-ph
Towards Understanding the Challenges of Bug Localization in Deep Learning Systems
本文通过大规模实证研究,利用2,365个深度学习缺陷和2,913个传统软件缺陷,系统分析了现有技术在深度学习系统缺陷定位中表现不佳的原因,揭示了缺陷类型和外在特性对定位效果的影响。
2025-07-22 cs.SE
DebugBench: Evaluating Debugging Capability of Large Language Models
Tsinghua University(清华大学);Renmin University of China(中国人民大学);ModelBest Inc.(ModelBest公司);Siemens AG.(西门子公司)
本文提出包含4253个实例的DebugBench基准,覆盖C++、Java和Python的四大类18种缺陷,通过零样本评估揭示闭源与开源LLM在调试能力上的差距、缺陷类别对复杂度的影响以及运行时反馈的非确定性作用。
2024-06-06 cs.AI cs.CL cs.SE
DDBench: A Benchmark for Agentic Debugging on Distributed Systems
University of Southern California(南加州大学)
该研究推出分布式系统代码修复基准DDBench,评估10个LLM的代码修复能力,发现调试上下文可提升准确率且对强弱模型影响不同,分布式调试能凸显单进程基准未体现的推理能力。
2026-11-10 cs.AI cs.DC cs.SE
From Codebase to Culprit (C2C): Reducing the Search Space for Bugs with Semantic Retrieval and Hierarchical Reinforcement Learning
University of Calgary(卡尔加里大学)
C2C框架结合语义检索与分层强化学习,在文件、函数和代码行多粒度上逐步缩减缺陷搜索空间,实现精确缺陷定位,并在真实Java和Python数据集上提升检索精度与定位准确性。
2026-10-01 cs.LG cs.SE
HotBugs.jar: A Benchmark of Hot Fixes for Time-Critical Bugs
针对现有基准缺乏热修复数据的问题,提出首个真实热修复数据集HotBugs.jar,含679个验证热修复及110个可复现案例,已用作SBSE会议挑战数据集,支持快速调试与自动修复研究。
2025-10-08 cs.SE
First Infrastructure and Experimentation in Echo-debugging
随着应用程序的开发,bug不可避免地被引入。通常,我们不清楚为什么一个给定的代码更改会引入一个给定的bug。为了找到这种因果关系并更有效地进行调试,开发人员可以利用以前版本的代码,而不使用bug。但是传统的调试工具并不是为这种类型的工作而设计的,这使得这种操作变得单调乏味。在这篇文章中,我们提出了探索性的工作回声调试器,一个工具来调试两个不同的执行并行,收敛发散映射(CDM)算法来定位所有的控制流的分歧和收敛这些执行。在这个探索性的工作中,我们提出了该工具的架构和解决一个不平凡的错误的方案。
2020-11-09 cs.PL cs.SE
A Novel Interactive-Guided Differential Testing Approach for FPGA Simulation Debugger Tools
提出名为DB-Hunter的交互式差分测试方法,通过RTL设计和调试动作转换生成复杂测试用例,有效检测Vivado FPGA调试器工具中的错误,三个月内报告18个问题并获官方确认与修复。
2025-03-03 cs.SE
RESID: A Practical Stochastic Model for Software Reliability
本文提出了一种新的方法称为RESID的软件可靠性估计允许不完美的调试。与早期的基于计算错误数量或建模故障间时间间隔的方法不同,RESID专注于程序错误的不同部分的“错误”概率。这种视角允许一种简单的方法来合并被测软件的结构,以及不完美的调试。RESID背后的一个主要设计目标是在实际场景中易于实现。
2011-04-18 cs.SE stat.AP
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
Metamorphic Testing and Debugging of Tax Preparation Software
本文提出了一个数据驱动的框架,以提高美国税务准备软件系统的可信度。鉴于此类软件中的漏洞对其用户的法律影响,确保税务准备软件的合规性和可信度至关重要。在为税务准备系统开发调试辅助工具方面的主要障碍是没有明确的规格和难以获得预言机。我们认为,由于美国税法遵循先例的法律原则,因此有关纳税人个人税务准备软件结果的规范必须与被视为类似的个人进行比较。因此,这些规范自然是可用的,因为软件上的属性需要类似的输入提供类似的输出。受变形测试范式的启发,我们将这些关系称为变形关系。在与法律和税务专家的合作中,我们解释了美国国税局(IRS)出版物中一系列具有挑战性的财产的变形关系,包括Publication 596(Earned Income Tax Credit),Schedule 8812(Qualifying Children/Other Dependents)和Form 8863(Education Credits)。我们专注于我们的案例研究的开源税务准备软件,并制定了一个随机的测试用例生成策略,系统地验证的正确性,税务准备软件的变形关系指导。我们进一步帮助这个测试用例生成直观地解释软件的行为可疑的情况下,使用易于解释的决策树模型。我们的工具发现了几个严重程度不同的问责错误,从极端情况下的非稳健行为(当纳税申报接近于零时的不可靠行为)到更新版本的软件中缺少资格条件。
2023-02-11 cs.CY cs.SE
Can LLMs Find Bugs in Code? An Evaluation from Beginner Errors to Security Vulnerabilities in Python and C++
1 Dept. of Computer Information Systems, Texas A\&M University - Central Texas, TX, 76549 USA.;2 LSU Center for Computation \& Technology, Louisiana State University, Baton Rouge, LA, 70803 USA.;3 Department of Physics;Astronomy, Louisiana State University, Baton Rouge, LA, 70803 USA.;4 Applied Computer Science (CCS-7), Los Alamos National Laboratory, Los Alamos, NM 87545 USA.
本文评估了三个主流LLM在检测Python和C++中基础错误、经典安全漏洞及生产级bug的有效性,发现其在语法和语义问题上表现良好,但在复杂安全漏洞和大规模代码中性能下降。
2026-02-09 cs.LG cs.SE
Fault Localization from the Semantic Code Search Perspective
针对故障定位(FL)有效性低于代码搜索(CS)的问题,提出CosFL方法,将FL分解为基于LLMs的查询生成和多粒度CS故障检索,在23个Java项目的835个真实缺陷上Top-1定位324个,优于现有方法26.6%-57.3%。
2024-11-26 cs.SE
Distinguishing Quantum Software Bugs from Hardware Noise: A Statistical Approach
针对 NISQ 时代量子软件缺陷与硬件噪声难以区分的问题,提出一种基于概率指标的统计方法,并通过 Grover、Deutsch-Jozsa 和 Simon 算法验证其有效性。
2025-07-28 cs.SE quant-ph
A Comprehensive Study on Deep Learning Bug Characteristics
Iowa State University(爱荷华州立大学)
近年来,深度学习获得了极大的普及。开发人员主要依靠库和工具来为他们的软件添加深度学习功能。在这些软件中经常发现什么样的bug?此类错误的根本原因是什么?这些bug有什么影响?深度学习管道的哪个阶段更容易出现错误?是否存在任何反模式?理解深度学习软件中缺陷的这些特征有可能促进更好的深度学习平台、调试机制、开发实践的开发,并鼓励分析和验证框架的开发。因此,我们研究了来自Stack Overflow的2716篇高质量帖子和来自Github的500个bug修复提交,这些帖子涉及五个流行的深度学习库Caffe,Keras,Tensorflow,Theano和Torch,以了解bug的类型,bug的根本原因,bug的影响,深度学习管道的bug易发阶段以及在这个bug软件中是否存在一些常见的反模式。我们研究的主要发现包括:数据错误和逻辑错误是深度学习软件中最严重的错误类型,出现的次数超过48%,这些错误的主要根源是模型参数不正确(IPS)和结构效率低下(SI),出现的次数超过43%。我们还发现,使用深度学习库时的错误有一些共同的反模式,导致库之间的错误类型具有很强的相关性。
2019-06-03 cs.LG cs.SE
Optimal Divide and Query (extended version)
自动调试是一种半自动调试技术,允许程序员精确地识别错误的位置,而无需检查源代码。该技术已经成功地适应了所有的范例,并且已经为Haskell,Prolog或Java等语言发布了成熟的实现。在过去的三十年中,Shapiro提出并由Hirunkitti改进的算法一直被认为是最佳的。在本文中,我们首先表明,该算法不是最优的,而且,在某些情况下,它是无法找到所有可能的解决方案,因此它是不完整的。然后,我们提出了一个新的版本的算法,证明是最佳的,我们引入一些方程,让算法来确定所有的最优解。
2011-07-26 cs.PL cs.SE