QBugs: A Collection of Reproducible Bugs in Quantum Algorithms and a Supporting Infrastructure to Enable Controlled Quantum Software Testing and Debugging Experiments
经验结果的可复制性和可比性是任何科学领域科学方法的核心原则。为了简化经验研究的可重复性,软件工程研究中的几个基准测试,如Defects 4J,已经开发并广泛使用。然而,对于量子软件工程研究,还没有建立基准。在这份立场文件中,我们提出了一个新的基准-命名为QBugs -这将提供实验对象和实验基础设施,以方便新的研究和量子软件工程先前发表的结果的再现性评估。
2021-03-31 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
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
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
A Fault Localization and Debugging Support Framework driven by Bug Tracking Data
Graz University of Technology(格拉茨工业大学)
故障定位已被确定为软件开发生存周期中的主要资源因素。学术故障定位技术大多是未知的,在专业环境中使用。虽然手动调试方法可以根据错误类型(例如内存错误或语义错误)而显着变化,但这些差异并没有反映在大多数现有的故障定位工具中。很少有研究自动识别错误类型,以优化故障定位过程。此外,现有的故障定位技术仅利用历史数据来增强可疑性排名。本论文的目的是提供一个错误定位的框架,结合来自不同来源的数据,以帮助开发人员在错误定位过程中。为了实现这一目标,引入了一个错误分类模式,基准创建,并提出了一种新的故障定位方法的基础上的历史数据。
2021-03-03 cs.AI cs.SE
Effects of Hints on Debugging Scratch Programs: An Empirical Study with Primary School Teachers in Training
学习者程序中的错误通常是基本误解的结果。教师经常面临的挑战是,首先必须了解这些错误,然后提出修复它们的方法。为了使教师能够有效和高效地这样做,最好支持他们识别和修复错误。误解通常会导致类似错误的重复模式,从而使自动化工具能够在常见错误模式出现时提供提示。在本文中,我们调查在何种程度上的提示提高了教师在调试学习者的程序使用一个队列的163名小学教师的培训,任务是纠正错误的Scratch程序的有效性和效率,有和没有提示的错误模式。我们的实验表明,自动生成的提示可以将查找和修复错误的时间从8.66分钟减少到5.24分钟,同时将正确解决方案的有效性提高34%。虽然这种改进是令人信服的,但可以说,培训中的教师可能首先需要学习调试“艰难的方式”,以免错过依靠工具学习的机会。因此,我们调查是否在训练过程中使用提示影响他们的能力,以识别和修复错误没有提示。我们的实验没有提供任何重要的证据表明,无论是学习调试与提示或学习调试“困难的方式”导致更好的学习效果。总的来说,这表明,错误模式可能是一个有用的概念,包括在课程中的教师培训,而工具支持,以认识到这些模式是可取的教师在实践中。
2021-08-16 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
An experience-based classification of quantum bugs in quantum software
本研究针对量子软件调试缺乏成熟指导的问题,基于开发经验与开源仓库分析梳理14类量子bug,发现其多由多层面因素共同作用导致,且调试策略与bug类别无明确关联,为后续量子调试研究提供了参考。
2025-09-03 cs.SE quant-ph
The GitHub Recent Bugs Dataset for Evaluating LLM-based Debugging Applications
针对 Defects4J 可能已进入 LLM 训练数据导致评估失真的问题,本文构建 GHRB 数据集,提供 OpenAI 截止日期后的 76 个真实 Java 缺陷。
2023-11-02 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
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
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
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
The University of British Columbia(不列颠哥伦比亚大学)
本文提出 CircInspect,一款面向 Python 与 PennyLane 量子程序的交互式调试工具,通过断点、实时开发、线路可视化和信息抽象帮助开发者理解并排查量子软件。
2025-09-04 cs.SE
Debugging Behaviour of Embedded-Software Developers: An Exploratory Study
许多研究人员研究了成功的开发人员在调试桌面软件时的行为。在本文中,我们调查嵌入式软件调试的中级程序员通过探索性研究。这些错误是语义上的低级错误,参与者是完成了实时操作系统课程以及其他五门编程课程的学生。我们比较成功的调试尝试与不成功的行为。我们描述了一些平稳和成功的调试行为的特点。
2017-04-11 cs.SE
Interactive Runtime Verification
监控是在运行时研究系统,寻找输入和输出事件以发现,检查或强制执行行为属性。交互式调试是在运行时研究系统,以发现和理解其错误并修复它们,交互式地检查其内部状态。交互式调试验证(i-RV)结合了监控和交互式调试。我们定义了一种有效和方便的方法来检查行为属性自动使用调试器的程序。我们的目标是帮助错误发现,同时保持经典的调试技术和交互性,允许理解和修复错误。
2017-05-15 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
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
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 Proposal for a Debugging Learning Support Environment for Undergraduate Students Majoring in Computer Science
本研究针对计算机专业本科生调试学习机会有限的问题,在Scratch中实现了断点放置与系统化调试的自学功能,并通过实验验证了其学习效果。
2024-07-25 cs.SE
Locating Buggy Segments in Quantum Program Debugging
本文首次针对量子程序调试提出考虑程序段位置依赖测试成本及统计测试精度-成本权衡特性的缺陷定位方法,实验证明其能有效降低以量子门执行数衡量的定位成本。
2024-01-15 cs.SE
Debugging Static Analysis
为了检测和修复错误和安全漏洞,软件公司使用静态分析作为开发过程的一部分。但是,静态分析代码本身也容易出现bug。为了确保一致的精度水平,随着被分析的程序变得越来越复杂,静态分析必须处理程序使用的更多代码构造、框架和库。虽然每天都有更复杂的分析被编写并用于生产系统,但调试和修复它们的成本也大大增加。为了更好地理解调试静态分析的困难,我们调查了115位静态分析作者。从他们的回复中,我们提取了构建用于静态分析的调试器的核心需求,这些需求围绕两个主要问题:(1)同时从两个代码库(分析代码和被分析代码)中进行抽象,以及(2)在两个代码库中跟踪分析内部状态。我们的调查参与者使用的大多数当前调试工具缺乏解决这两个问题的能力。针对这些需求,我们介绍了VisuFlow,这是一个集成在Eclipse开发环境中的静态数据流分析调试环境。VisuFlow具有图形可视化功能,使用户能够随时查看数据流分析的状态及其中间结果。VisuFlow中的特殊断点可帮助用户同时单步执行分析代码和分析对象。为了评估VisuFlow的有用性,我们对20位静态分析作者进行了用户研究。与使用标准Eclipse调试环境相比,使用VisuFlow帮助我们的分析编写者样本识别并修复了分析代码中25%以上的错误。
2018-01-15 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
A Comprehensive Study of Bug Fixes in Quantum Programs
随着量子编程的发展,越来越多的量子编程语言正在开发中。因此,调试和测试量子程序变得越来越重要。虽然经典程序中的错误修复已经走过了很长的路,但在量子程序中缺乏研究。为此,本文提出了一个全面的研究量子程序中的错误修复。我们收集和调查了来自四种流行的量子编程语言Qiskit,Cirq,Q#和ProjectQ的96个真实世界的错误及其修复。我们的研究表明,量子程序中的错误有很大比例是量子特定的错误(超过80%),这需要在错误修复领域进行进一步的研究。我们还总结和扩展了量子程序中的错误模式,并对最关键的部分--数学相关错误进行了细分,使其更适用于量子程序的研究。我们的研究结果总结了量子程序中缺陷的特征,为研究量子程序的测试和调试提供了基础。
2022-01-21 cs.PL cs.SE quant-ph
Understanding and Supporting Debugging Workflows in Multiverse Analysis
本文针对多重宇宙分析中调试反馈滞后、元数据诊断规模大的问题,原型化 Multiverse Debugger,并通过 n=13 的定性研究揭示调试工作流挑战与系统设计启示。
2023-06-04 cs.HC 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
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
Do AI models help produce verified bug fixes?
Constructor Institute of Technology(构造技术研究所)
本研究通过随机对照实验,利用程序证明环境验证修复正确性,探究LLM在自动程序修复中的实际效用,发现结果出乎意料,并贡献了可复用的实验方法、行为分析、7类使用模式及实用建议。
2025-08-04 cs.AI 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
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
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
SWE-Synth: Synthesizing Verifiable Bug-Fix Data to Enable Large Language Models in Resolving Real-World Bugs
FPT Software AI Center, Viet Nam(越南FPT软件AI中心);Nanyang Technological University, Singapore(新加坡南洋理工大学);University of Texas at Dallas, US(美国德克萨斯大学达拉斯分校)
SWE-Synth通过合成可验证的bug修复数据集,提升大语言模型在解决现实bug中的性能。
2025-12-20 cs.AI cs.SE
Sindarin: A Versatile Scripting API for the Pharo Debugger
调试是软件维护中最重要和最耗时的活动之一,然而主流的调试器并不能很好地适应多种调试场景。这导致了新技术的研究,涵盖了复杂错误的特定家庭。值得注意的是,最近的研究建议为开发人员提供脚本DSL,基于插件和可塑造的调试器。然而,这些解决方案是针对特定用例定制的,或者对于一次性使用场景来说成本太高。在本文中,我们认为,在主流调试器中公开调试脚本接口有助于解决许多具有挑战性的调试方案。为此,我们提出了Sindarin,一个脚本API,简化了开发人员在调试会话期间追求的不同策略的表达和自动化。Sindarin提供了一个类似GDB的API,增加了AST字节码源代码映射和以对象为中心的功能。为了证明Sindarin的多功能性,我们从文献中重现了几个先进的断点和非平凡的调试机制。
2019-09-09 cs.PL cs.SE
ChatDBG: Augmenting Debugging with Large Language Models
University of Massachusetts Amherst(马萨诸塞大学阿默斯特分校);Amazon Web Services(亚马逊网络服务);Williams College(威廉姆斯学院)
ChatDBG是一个集成大型语言模型的AI调试助手,通过与调试器协作对话,实现根因分析、错误解释和自动修复,显著提升调试效率,单次查询修复率达67%。
2025-06-19 cs.AI cs.LG cs.PL
An Empirical Study on Bugs Inside PyTorch: A Replication Study
Concordia University(康考迪亚大学);Polytechnique Montréal(蒙特利尔理工学院);University of Alberta(阿尔伯塔大学);Université du Québec à Montréal(魁北克大学蒙特利尔分校);Queen’s University(女王大学)
受TensorFlow缺陷研究启发,本文对PyTorch库中的缺陷进行了特征刻画,调查了其原因、症状、局部性及修复模式,发现其更像传统软件缺陷,并与TensorFlow的缺陷处理过程进行了对比。
2023-08-01 cs.AI cs.SE
AgentStepper: Interactive Debugging of Software Development Agents
University of Stuttgart(斯图加特大学);CISPA Helmholtz Center for Information Security(CISPA 沃尔夫冈·泡利信息安全中心)
AgentStepper是一种用于LLM软件工程代理的交互式调试工具,通过结构化对话和逐步执行提升调试效率,减少开发者工作量。
2026-02-06 cs.AI cs.SE
RESID: A Practical Stochastic Model for Software Reliability
本文提出了一种新的方法称为RESID的软件可靠性估计允许不完美的调试。与早期的基于计算错误数量或建模故障间时间间隔的方法不同,RESID专注于程序错误的不同部分的“错误”概率。这种视角允许一种简单的方法来合并被测软件的结构,以及不完美的调试。RESID背后的一个主要设计目标是在实际场景中易于实现。
2011-04-18 cs.SE stat.AP
Harvesting Fix Hints in the History of Bugs
在软件开发中,修复错误是一项耗时且成本敏感的重要任务。虽然已经提出了许多方法来自动检测和修补软件代码,但这些策略仅限于一组经过深入研究以定义其属性的已识别错误。因此,它们设法覆盖了一小部分故障,如无限循环。我们建立在错误和相关用户错误报告是重复的假设之上,并提出了一种基于错误历史及其相关修复的修复建议新方法。在我们的方法中,一旦报告了一个错误,它会自动使用信息检索技术和机器学习分类与所有以前修复的错误进行比较。基于此比较,我们推荐从过去的修复示例中识别的顶级{ \em k}修复操作,这些操作可能适合作为软件开发人员解决新错误的提示。
2015-07-21 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
FReD: Automated Debugging via Binary Search through a Process Lifetime
可逆调试器至少从1970年就开始开发了。当bug的原因与bug的表现时间接近时,这样的特性非常有用。如果原因很久以前,则可以在调试器中设置适当的断点并开始新的调试会话。对于这些情况,当一个错误的原因是远远从它的表现时间,错误诊断需要一系列的调试会话,以缩小错误的原因。对于这样的“困难”的错误,这项工作提出了一个自动化的工具,通过进程的生命周期搜索,并找到原因。例如,该错误可能与程序不变式失败有关。在整个进程生命周期中进行二分搜索就足够了,因为在程序执行开始时不变表达式为真,而在遇到bug时为假。在FReD(快速可逆搜索器)软件中提出了一种用于这种二分搜索的算法。它基于检查点、重新启动和确定性地重放调试会话的多个进程的能力。它基于GDB(调试器),DMTCP(用于检查点重启)和DMTCP的自定义确定性记录重放插件。FReD支持复杂的、真实世界的多线程程序,如MySQL和Firefox。此外,二分搜索是鲁棒的。它在多线程程序上运行,并在重放期间利用多核架构。
2012-12-20 cs.SE
Distinguishing Quantum Software Bugs from Hardware Noise: A Statistical Approach
针对 NISQ 时代量子软件缺陷与硬件噪声难以区分的问题,提出一种基于概率指标的统计方法,并通过 Grover、Deutsch-Jozsa 和 Simon 算法验证其有效性。
2025-07-28 cs.SE quant-ph
Challenges and Practices in Quantum Software Testing and Debugging: Insights from Practitioners
William & Mary(威廉与玛丽学院)
本文探讨了量子软件测试与调试中的挑战,指出开发者多依赖经典方法,缺乏专用工具,需改进工具以适应量子开发流程。
2026-01-16 cs.SE
How to Teach Programming in the AI Era? Using LLMs as a Teachable Agent for Debugging
本研究提出HypoCompass系统,让学生以助教身份帮LLM可教智能体调试代码,通过任务分工提升学生调试能力,其生成训练材料效率超人类四倍,学生调试成绩提升12%。
2024-10-10 cs.HC cs.SE
BugGen: A Self-Correcting Multi-Agent LLM Pipeline for Realistic RTL Bug Synthesis
Texas A\&M University(德克萨斯A&M大学);Infineon Technologies(英飞凌科技)
BugGen提出了一种自校正多智能体LLM流水线,用于在RTL中自动生成、插入和验证真实功能缺陷,在OpenTitan上实现94%功能准确率,并显著提升验证效率与ML辅助调试性能。
2025-06-18 cs.LG cs.SE