Debugging Native Extensions of Dynamic Languages
许多动态规划语言,如Ruby和Python,使开发人员能够使用所谓的本地扩展,代码实现在典型的静态编译语言,如C和C++。但是,这些动态语言的调试器通常不支持调试这些本地扩展。GraalVM可以执行以各种动态规划语言实现的程序,并且通过使用LLVM-IR解释器Sulong,还可以执行它们的本地扩展。我们基于GraalVM的调试框架,通过将LLVM-IR级别的运行时调试信息与原始程序代码相关联,为Sulong添加了对源代码级调试的支持。因此,开发人员现在可以使用GraalVM调试用多种基于LLVM的程序设计语言编写的源代码,以及用各种动态语言实现的程序,这些程序在公共调试器前端中调用GraalVM。
2018-08-02 cs.SE
Online and Interactive Bayesian Inference Debugging
针对概率编程中贝叶斯推理调试耗时长、知识门槛高的问题,本文提出一种在线交互式调试方法,开发了适配开发环境的调试工具,经18名经验丰富参与者的实验验证,可显著降低调试的时间成本与难度。
2025-10-30 cs.SE
Debugging Without Error Messages: How LLM Prompting Strategy Affects Programming Error Explanation Effectiveness
本文研究在不提供编译器/解释器错误消息、仅给出出错源代码时,GPT-3.5的单样本提示与微调等策略如何提升编程错误解释效果,以辅助编程教学。
2025-01-10 cs.HC cs.SE
NuzzleBug: Debugging Block-Based Programs in Scratch
本文提出 Scratch 扩展 NuzzleBug,通过断点、单步、反向执行和执行问答支持儿童调试,并经师生评估验证其有效性。
2023-09-25 cs.SE
Proceedings of the Fourth International Workshop on Automated Debugging (AADEBUG 2000)
在过去的几十年里,自动化调试已经取得了重大成就。然而,由于调试必然与特定的编程范式相关联,因此结果是分散的。研讨会的目的是收集编程社区的共同主题和解决方案,并相互交流想法。慕尼黑的AADEBUG 2000是继瑞典林科平的AADEBUG'93、法国圣马洛的AADEBUG'95和瑞典林科平的AADEBUG'97之后的又一次盛会。
2001-01-23 cs.PL cs.SE
Multi-Approach Debugging of Industrial IoT Workflows
工业物联网(IIoT)是在工业环境中增加传感和驱动功能,以改善整体制造流程的结果。其中一些系统具有高度复杂的监测和控制任务,需要相应地编程。可视化编程(如工作流)的使用在这些系统中很常见,因为它们为系统程序员提供了抽象。然而,这样的编程环境在调试能力方面存在一些缺陷,主要是由于难以使用传统机制的约束。本文提出的工作接近这些问题,深入到一个商业级的制造执行系统的多策略调试机制的设计和实现。为了验证该方法,然后开发了一个概念验证,并针对不同的调试场景进行了验证。
2020-09-12 cs.SE
Debugging Behaviour of Embedded-Software Developers: An Exploratory Study
许多研究人员研究了成功的开发人员在调试桌面软件时的行为。在本文中,我们调查嵌入式软件调试的中级程序员通过探索性研究。这些错误是语义上的低级错误,参与者是完成了实时操作系统课程以及其他五门编程课程的学生。我们比较成功的调试尝试与不成功的行为。我们描述了一些平稳和成功的调试行为的特点。
2017-04-11 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
Benchmarking ChatGPT, Codeium, and GitHub Copilot: A Comparative Study of AI-Driven Programming and Debugging Assistants
本文比较了 ChatGPT、Codeium 和 GitHub Copilot 在 LeetCode 问题上的表现,发现 Copilot 擅长简单和中等任务,ChatGPT 在内存效率和调试上更优,而 Codeium 在复杂问题上表现较弱,为开发者选择 AI 编程助手提供了参考。
2024-09-30 cs.SE
ProDebug: An Automated Debugging System for Prolog
Carnegie Mellon University(卡内基梅隆大学)
提出结合大语言模型、频谱和变异技术的Prolog自动调试系统ProDebug,用于识别学生作业中的错误并生成修复方案。
2026-05-26 cs.PL cs.SE
PreciseCoder: Faithful and Generalizable Debugging Beyond Unit-Test Rewards
University of Chicago(芝加哥大学);University of Southern California(南加州大学);Google(谷歌);University of California, Berkeley(加利福尼亚大学伯克利分校)
PreciseCoder是一种新增语义验证局部编辑信号的代码调试训练算法,可减少编辑量并保持通过率,还能泛化到仓库级修复,其推理轨迹可提升前沿模型的编辑精度。
2026-10-14 cs.AI cs.CL cs.SE
BugsInPy: A Database of Existing Bugs in Python Programs to Enable Controlled Testing and Debugging Studies
受Java缺陷基准Defects4J启发,本研究构建了包含17个真实Python项目493个真实缺陷的BugsInPy基准数据库及工具,以填补Python测试调试基准的不足,推动相关工具研究发展。
2024-01-27 cs.SE
Beyond the Traceback: Using LLMs for Adaptive Explanations of Programming Errors
Delft University of Technology(代尔夫特理工大学)
该研究通过103人众包实验,探究LLM生成的两类编程错误解释对调试的影响,发现LLM提升主观评价但未显著改善客观调试性能,提出自适应AI反馈系统需转向动态调整。
2026-08-24 cs.HC cs.SE
DebugTA: An LLM-Based Agent for Simplifying Debugging and Teaching in Programming Education
针对编程教育中调试与教学任务输入复杂且未充分利用标准代码的挑战,提出基于LLM的智能体DebugTA,通过专用工具和任务分解简化推理并对齐代码,显著提升教学效果并降低计算成本。
2025-10-13 cs.SE
Out-Of-Place debugging: a debugging architecture to reduce debugging interference
上下文最近的研究表明,开发人员将大部分编程时间用于测试,验证和调试软件。随着应用程序变得越来越复杂,开发人员需要更高级的调试支持来简化软件开发过程。查询自70年代以来,引入了许多调试解决方案。其中,在线调试器提供了一个很好的洞察导致错误的条件,允许检查和与程序的变量交互。然而,大多数在线调试解决方案将\textit{debugging interference}引入到程序的执行中,即暂停、延迟和包含副作用的代码的评估。approach.本文研究了一种新的调试技术,称为\outofplace调试。目标是最小化在线调试的调试干扰特性,同时允许在线远程功能。\outofplace调试器将程序执行和应用状态从被调试的应用程序传送到调试器应用程序,两者都在不同的进程中运行。知识一方面,\outofplace调试允许开发人员远程调试应用程序,克服了对运行被调试应用程序的机器进行物理访问的需要。另一方面,调试在远程机器上本地进行,避免了延迟。这使得它适合部署在分布式系统上,并处理并行运行的多个进程的调试。接地。我们为Pharo Smalltalk程序设计语言实现了一个具体的异地调试器。我们表明,我们的方法是实用的,通过执行几个基准,比较我们的方法与经典的远程在线调试器。我们表明,我们的原型调试器优于传统的远程调试器在几种情况下的1000倍。此外,我们表明,我们的调试器的存在不会影响应用程序的整体…
2018-11-05 cs.SE
Explicit Programming Strategies
软件开发人员解决各种各样的问题。虽然软件工程的研究通常集中在支持这种问题解决的工具上,但开发人员用于解决问题的策略至少同样重要。在本文中,我们提供了一种新的方法,使开发人员遵循明确的编程策略,描述了专家如何处理一个常见的编程问题。我们定义明确的编程策略,接地我们的定义在以前的工作都在软件工程和其他专业,采用更明确的程序解决问题。然后,我们提出了一种新的符号称为Roboto和一种新的StrategyTracker工具,明确表示编程策略和框架执行策略之间的合作努力,人类的能力,使决策和计算机的能力,结构化的过程和持久的信息。在形成性评价中,28名不同专业知识的软件开发人员完成了一项设计任务和一项调试任务。我们发现,与自由选择策略的开发人员相比,开发人员给出的明确策略使他们的工作更具组织性,系统性和可预测性,但也更具约束性。使用显式策略的开发人员在设计和调试任务上客观上更成功。我们讨论了Roboto和这些发现的影响,设想了一个繁荣的生态系统的显式策略,加速和提高开发人员编程解决问题。
2019-11-06 cs.HC cs.SE
TraceDiff: Debugging Unexpected Code Behavior Using Trace Divergences
程序合成的最新进展提供了在大规模编程教室中自动调试学生提交并生成个性化反馈的方法。当自动生成编程作业的反馈时,一个关键的挑战是设计教学上有用的提示,这些提示与教师给出的手动反馈一样有效。通过对132篇网络问答帖中教师暗示行为的分析,我们确立了有效反馈设计应遵循的三条设计原则。基于这些准则,我们开发了一个反馈系统,利用程序合成和可视化技术。我们的系统比较了不正确代码和固定代码的动态代码执行,并强调了错误如何导致行为的差异,以及不正确的代码跟踪偏离预期的解决方案。从我们的研究结果表明,我们的系统使学生能够检测和修复错误,没有被学生使用另一个现有的可视化调试工具。
2017-08-12 cs.CY cs.HC cs.PL
Assertion checker for the C programming language based on computations over event traces
提出了一种基于精确程序行为模型的软件测试和调试自动化工具的开发方法。程序行为模型被定义为一组事件(事件跟踪),事件上有两个基本的二元关系-优先级和包含,并表示动作之间的时间关系。开发了一种用于事件跟踪计算的语言,为断言检查、调试查询、执行配置文件和性能测量提供了基础。该方法是非破坏性的,因为断言文本与目标程序源代码分离,可以独立维护。断言可以捕获特定目标程序的动态属性,并且可以形式化典型错误和调试策略的一般知识。事件语法通过目标程序自动插装为断言语言实现提供了可靠的基础。一个实现架构和初步的实验与原型断言检查的C程序设计语言进行了讨论。
2001-01-12 cs.PL cs.SE
Enhancing Debugging Skills with AI-Powered Assistance: A Real-Time Tool for Debugging Support
JetBrains Research(JetBrains研究)
本文提出一种基于AI的实时调试辅助工具,通过减少LLM调用并提升准确性,帮助提升编程教育中的调试技能。
2026-01-05 cs.AI cs.CY cs.SE
TEMANEJO - a debugger for task based parallel programming models
我们提出的程序Temanejo,调试器任务为基础的并行模型,如StarSs。调试StarSs应用程序的挑战在于,任务是在运行时调度的,即根据它们之间的数据依赖关系动态调度。我们的工具通过可视化任务依赖图并允许控制任务的调度来帮助程序员在调试过程中。该工具集由库Ayudame和调试器Temanejo组成,前者与StarSs运行时通信,后者与Ayudame通信。Temanejo提供了一个图形化的用户界面,可以通过它来分析和控制应用程序。
2011-12-20 cs.DC cs.SE
Automated Deductive Verification for Ladder Programming
梯形图逻辑是IEC 61131-3标准化的程序设计语言,广泛用于对工业可编程逻辑控制器(PLC)进行编程。PLC程序由输入(其值在运行时由工厂传感器给出),输出(其值在运行时提供给工厂执行器)和从输入值计算输出值的逻辑表达式组成。由于梯形图程序的图形形式,以及典型工业程序中的输入和输出量,调试此类程序既耗时又容易出错。在本文中,我们提出了一个基于Why 3的工具原型,我们已经实现了自动化的演绎验证的使用,以提供一个易于使用和强大的调试工具的阶梯程序员。
2019-12-23 cs.LO cs.PL 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
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
A Framework for Debugging Java Programs in a Bytecode
在软件工程领域,程序分析和理解一直被认为是一个非常具有挑战性的任务,因为它需要专门的时间和精力。由于其静态特性,对源代码的分析有时可能相对容易,然而,后端代码(字节码),特别是在Java编程方面,分析起来很复杂。在本文中,我们提出了一种方法论的方法来理解Java程序的字节码。提出了一个Java字节码调试过程的框架。此外,我们讨论了调试过程中的字节码理解从简单的多语句方面的数据流分析。最后,我们提出了一个比较分析的字节码随着模拟的建议框架的调试过程
2019-04-29 cs.FL cs.PL cs.SE
Bringing Back-in-Time Debugging Down to the Database
使用回溯调试器,开发人员可以通过跟踪感染链追溯其根本原因来探索可观察到的故障之前发生的情况。虽然有几个这样的面向对象的程序设计语言的调试器,我们不知道任何在数据库级的回溯能力。因此,如果故障是由SQL脚本或存储过程引起的,开发人员很难理解它们的意外行为。在本文中,我们提出了一种方法,用于将时间回溯调试引入SAP HANA内存数据库。我们的TARDISP调试器允许开发人员向后执行查询,并在以前的任意时间点检查数据库。在SQL扩展的帮助下,我们可以在调试会话中表达覆盖一段执行时间的查询,并以较低的性能和内存开销处理大量数据。整个方法已经在SAP的一个开发项目中进行了评估,并在收集的开发人员反馈方面显示出有希望的结果。
2017-01-19 cs.SE
Edit Transactions: Dynamically Scoped Change Sets for Controlled Updates in Live Programming
实时编程环境使程序员能够编辑正在运行的程序,并获得对每个单独更改的即时反馈。程序员重视活动质量,以帮助以小步骤工作,并不断添加或更正小功能,同时保持每个编辑及其运行时表现形式之间的直接联系。这种即时性可能与执行一组组合的中间步骤(例如重构)而不是在每个单独的编辑之后立即生效的期望相冲突。当一个不完整的小规模更改序列很容易破坏正在运行的程序时,这一点就变得很重要。最先进的解决方案侧重于追溯恢复机制,如调试或版本控制。相比之下,我们提出了一种主动的方法:在编辑事务中收集对程序的多个单独更改,如果认为完成,则可以使其生效。激活后,合并的步骤一起可见。编辑事务能够动态地确定范围,允许在将一组更改扩展到正在运行的应用程序之前对其进行隔离测试。这使得实时编程工作流能够完全控制更改粒度、测试的即时反馈、对正在运行的应用程序的延迟影响以及粗粒度撤销。我们在Squeak/Smalltalk中实现了编辑事务以及编辑事务感知工具。我们进行了一个案例研究,有和没有新的工具支持,比较编程活动,错误和弯路,在运行模拟实现新的功能,评估这种实现。我们的结论是,使用编辑事务的工作流有可能增加对更改的信心,减少运行时错误的可能性,并最终使实时编程更具可预测性和吸引力。
2017-04-03 cs.PL cs.SE
Towards declarative diagnosis of constraint programs over finite domains
本文提出了一种基于解释树概念的约束程序调试的理论方法。所提出的方法是一种尝试,以适应算法调试约束编程。在这个域缩减的理论框架中,解释是解释值移除的证明树。这些证明树是由归纳定义定义的,归纳定义将值的移除表示为其他值移除的结果。约束规划的本质是求解。它们是计算跟踪的声明性视图。诊断在于找出以症状为根源的解释中的错误。
2003-09-17 cs.SE
Direct Interpretation of Functional Programs for Debugging
我们对长期存在的调试问题进行了另一次攻击。在探讨了为什么调试器没有像人们期望的那样广泛使用,特别是在函数式编程环境中,我们定义了调试器的特性,使其可用,从而广泛使用。我们提出了一个新的调试器OCaml的直接解释的程序源操作,允许打印出的程序的评估的各个步骤的初步工作。我们提出了OCamli,一个独立的解释器,并提出了一种机制,解释器可以集成到编译的可执行文件,允许程序的一部分被解释在相同的方式作为OCamli,而其余的程序本地运行。我们展示了这样的机制可能会创建一个源代码级的调试系统,具有可用的调试器的特性(如独立于其环境),因此最终可能会被期望适合广泛采用。
2019-05-16 cs.PL cs.SE
Declarative Diagnosis of Floundering
许多逻辑程序设计语言都有延迟原语,允许协同编程。这引入了一类错误症状--当计算想要成功或有限失败时,计算可能会陷入困境。对于并发逻辑程序,这通常称为死锁。类似地,约束逻辑程序可能无法调用某些约束求解器,因为变量没有被充分地实例化或约束。迄今为止,诊断此类故障的注意力相对较少。由于延迟原语影响程序的过程性而不是声明性视图,因此可以预期调试必须考虑交错执行的通常复杂的细节。然而,最近的工作语义提出了另一种方法。在本文中,我们将展示如何声明式调试范式可以用来诊断意外的挣扎,绝缘的复杂性执行的用户。关键词:逻辑程序设计,协同程序设计,延迟,调试,挣扎,死锁,约束
2007-11-01 cs.PL cs.SE
CUDABeaver: Benchmarking LLM-Based Automated CUDA Debugging
University of Minnesota(明尼苏达大学)
提出CUDABEAVER基准,通过协议条件指标pass@k(M,C,A)评估LLM修复CUDA代码的能力,揭示性能损失容忍度对成功率的影响。
2026-05-26 cs.LG cs.PL cs.SE
ControlFlag: A Self-Supervised Idiosyncratic Pattern Detection System for Software Control Structures
Intel Labs(英特尔实验室);University of Pennsylvania(宾夕法尼亚大学)
软件调试已经被证明占用了开发人员一半以上的时间。然而,机器编程(MP),与软件(和硬件)开发的自动化有关的领域,最近在研究和生产质量的自动调试系统方面取得了长足的进步。在本文中,我们提出了ControlFlag,一个自我监督MP系统,旨在通过尝试检测软件控制结构中的特殊模式违规来提高调试。ControlFlag还建议在检测到异常模式的情况下可能进行的校正。我们提出了ControlFlag的设计,并提供了一个实验评估和分析其有效性,在生产质量的软件中识别潜在的编程错误。作为提高软件质量的第一个具体证据,ControlFlag已经发现了CURL中的一个异常,该异常已被其开发人员承认并修复。我们还讨论了ControlFlag的未来扩展。
2021-05-17 cs.AI cs.PL cs.SE
Self-Edit: Fault-Aware Code Editor for Code Generation
Peking University(北京大学)
提出Self-Edit方法,利用LLMs生成代码的执行结果作为补充注释指导容错编辑器纠正错误,在多个数据集和模型上显著提升pass@1准确率。
2023-09-11 cs.CL cs.SE
Live, Rich, and Composable: Qualities for Programming Beyond Static Text
推动编程超越静态文本代码的努力已经寻求向编程注入多种不同的品质。一个长期公认的特性是活跃性:在程序编辑时为程序员提供关于程序动态行为的深入反馈。第二个品质,长期探索但缺乏共同的艺术术语,是丰富性:允许程序员通过特定领域的表示和交互来编辑程序,而不仅仅是通过文本。在本文中,我们映射这两个品质之间的关系,并调查过去的工作,证明他们。我们观察到,结合了活性和丰富性的系统往往是以牺牲传统编程的一个基本品质为代价的:可组合性。我们认为,通过结合活性,丰富性和可组合性,编程系统可以更好地捕捉交互式计算的全部潜力,而不会留下传统代码的表现力。
2023-03-12 cs.HC cs.PL cs.SE
Multi-Mode Debugging for FRP-Based Embedded Systems
Institute of Science Tokyo(东京科学大学)
针对Emfrp嵌入式应用的抽象鸿沟问题,提出多模式调试框架,结合源代码映射技术,可在Emfrp抽象级与C/C++ I/O级调试,经ESP32案例验证提升调试效率。
2026-09-30 cs.PL cs.SE
Fully Autonomous Programming using Iterative Multi-Agent Debugging with Large Language Models
Simula(西穆拉(挪威科技机构));University of Oslo(奥斯陆大学);TU Eindhoven(埃因霍温理工大学);Philips Research(飞利浦研究实验室)
本文提出多智能体调试框架 SEIDR,通过迭代执行、指令、调试与修复,结合不同排序和混合策略,有效克服大语言模型程序合成中的“差之毫厘综合征”,并在 PSB2 和 HumanEval-C++ 上取得显著效果。
2025-03-10 cs.AI cs.LG cs.NE
DebugHarness: Emulating Human Dynamic Debugging for Autonomous Program Repair
State Key Laboratory for Novel Software Technology, Nanjing University(南京大学新型软件技术国家重点实验室)
DebugHarness通过模拟人类动态调试过程,利用LLM实现复杂漏洞的自动修复,其动态调试方法在SEC-bench数据集上实现了90%的修复率,比现有方法提升30%以上。
2026-04-04 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
RECAP: An End-to-End Platform for Capturing, Replaying, and Analyzing AI-Assisted Programming Interactions
Carnegie Mellon University(卡内基梅隆大学)
RECAP通过记录和回放开发者与AI编程助手的交互,分析其行为模式和策略演变,为软件工程教育提供支持。
2026-05-01 cs.CL cs.HC cs.SE
ViScratch: Using Large Language Models and Gameplay Videos for Automated Feedback in Scratch
ViScratch 是首个面向 Scratch 的多模态反馈生成系统,利用项目积木代码和游戏视频,通过视觉语言模型对齐视觉症状与代码结构,提出并验证 AST 级修复,在错误识别和修复质量上显著优于现有工具。
2025-09-14 cs.PL cs.SE
MP-CodeCheck: Evolving Logical Expression Code Anomaly Learning with Iterative Self-Supervision
机器编程(MP)涉及自动化软件开发。根据研究,软件工程师将超过50%的开发时间用于调试软件。为了帮助加速调试,我们提出了MP-CodeCheck(MPCC)。MPCC是一个MP系统,它试图识别逻辑程序表达式中的异常代码模式。在设计MPCC的过程中,我们开发了两种新颖的程序设计语言表示,它们的形成对于其穷尽和有效地处理用于其自我监督训练的数十亿行代码的能力至关重要。为了量化MPCC的性能,我们将其与ControlFlag(一种最先进的自监督代码异常检测系统)进行比较;我们发现MPCC在空间和时间上都更有效。我们通过在各种开源GitHub存储库和一个专有代码库上练习来展示MPCC的异常代码检测功能。我们还提供了一个简短的定性研究的一些不同类别的代码异常,MPCC可以检测到提供一个简短的洞察其能力。
2022-04-14 cs.SE
FAPR: Fast and Accurate Program Repair for Introductory Programming Courses
在编程入门课程中,教师对学生的错误程序提供调试反馈是一项挑战。最近的一些工具通过识别错误程序和正确程序之间的任何差异来自动提供程序修复反馈,但存在与可扩展性,准确性和跨语言可移植性相关的问题。本文介绍了FAPR -我们的新方法,建议修复程序的差异,在一个快速,准确的方式。FAPR在三个方面不同于当前的工具。首先,它将语法信息编码为令牌序列,以实现错误和正确程序之间的高速比较。其次,为了准确地提取程序差异,FAPR采用了一种新的匹配算法,最大限度地提高令牌级匹配,最小化语句级差异。第三,FAPR依赖于测试而不是静态/动态分析来验证和细化候选修复,因此它消除了由复杂程序分析引起的语言依赖性或高运行时开销。我们实现了FAPR,为C和C++程序提供修复建议;我们的经验表明FAPR具有出色的跨语言可移植性。更重要的是,我们经验比较FAPR与最先进的工具克拉拉。FAPR建议对95.5%以上的错误解决方案进行修复。我们在FAPR的建议中抽取了250个维修样本,发现89.6%的样本是最小的和正确的。FAPR的表现优于Clara,因为它为更多的案例提供了修复建议,创建了更小的修复,产生了更高质量的修复,并降低了运行时开销。我们的研究结果表明,FAPR可以潜在地帮助教师或TA有效地定位错误的代码中的错误,并提供调试提示/指导方针的基础上产生的修复。
2021-07-14 cs.SE
Combining Logic with Large Language Models for Automatic Debugging and Repair of ASP Programs
本文提出 FormHe,融合逻辑故障定位、程序变异与 LLM,自动识别并修复学生提交的错误 ASP 程序,实验显示故障检测准确率达 94%、修复成功率达 58%。
2024-10-28 cs.LO cs.SE
How Do Developers Edit AI-Generated Code, and How Well Do LLMs Infer Their Edits? Insights from 53.6K Developer Edits
Carnegie Mellon University(卡内基梅隆大学)
研究人工智能生成代码的开发者编辑行为,引入DECODE数据集。通过该数据集进行数据分析及对大语言模型预测代码编辑能力的基准测试,发现多数编辑在前15分钟,且微调后开源模型表现更佳,强调以开发者为中心方法对未来AI编程助手的必要性。
2026-10-30 cs.AI cs.HC cs.LG
Enhancing Python Programming Education with an AI-Powered Code Helper: Design, Implementation, and Impact
本研究提出一种结合静态分析、动态跟踪和LLM的AI聊天机器人,帮助Python学习,实验显示错误解决率达85%,调试时间减少59.3%,编码熟练度提升34%。
2025-09-24 cs.PL cs.SE
On Feasibility of Declarative Diagnosis
本文探讨Prolog程序调试中声明式诊断方法被忽视的问题,分析其弱点并提出克服方案,论证了声明式诊断在实际编程中的可行性与应用价值。
2023-08-30 cs.LO cs.PL cs.SE
Learner-Tailored Program Repair: A Solution Generator with Iterative Edit-Driven Retrieval Enhancement
本文提出面向学习者的程序修复任务及LSGEN框架,通过迭代编辑驱动检索增强方法提升程序修复效果,实验验证其在编程辅导中的有效性。
2026-01-18 cs.AI cs.CL cs.SE