Effective Large Language Model Debugging with Best-first Tree Search
NVIDIA(英伟达)
提出一种带自我反思的最佳优先树搜索算法(BESTER),使LLM能通过识别先前错误来调试代码,在三个基准上实现最先进的Pass@1,并提供了关于自我反思机制与有效性的深入分析。
2024-07-26 cs.AI cs.LG cs.SE
COSPEX: A Program Comprehension Tool for Novice Programmers
开发人员在软件维护过程中经常会遇到不熟悉的代码,这会消耗大量的时间来理解,特别是对于新手程序员。分析源代码并向开发人员提供关键信息的自动化技术可以有效地理解代码。研究人员已经提出了自动代码摘要技术,该技术通过生成简要摘要而不是帮助理解代码摘要来关注代码摘要。现有的调试器表示程序的执行状态,但它们不显示单个点的完整执行。研究表明,如果为新手程序员提供工作示例,则可以减少程序理解所需的努力。因此,我们提出了CO(通过程序执行使用摘要的理解)--一个Atom插件,它动态提取每行执行代码的关键信息,并以交互式示例式动态信息实例的形式将其呈现给开发人员。作为初步评估,我们在用户调查中向14名具有1年以上Python编程经验的本科生介绍了代码理解任务。我们观察到COdac帮助新手程序员理解程序,并提高他们对代码执行的理解。源代码和工具可在https://bit.ly/3utHOBM上获得,Youtube上的演示可在https://bit.ly/2Sp08xQ上获得。
2021-07-06 cs.SE
Monitoring and Debugging Concurrent and Distributed Object-Oriented Systems
调试、测试和分析复杂软件系统的一个主要部分是了解系统在运行时发生了什么。一些开发人员提倡在调试器中运行,以便更好地理解这一级别的系统。其他的嵌入日志记录语句,甚至是以硬编码的打印函数调用的形式,贯穿整个代码。这些技术都是我们所谓的系统监控的一般的、粗略的形式,虽然它们在简单的顺序系统中的用处有限,但在复杂的并发系统中几乎没有用处。我们提出了一套新的机制,统称为一个监测系统,了解这样复杂的系统,我们描述了这样一个系统,称为Icons,Java程序设计语言的一个例子实现。
2002-04-15 cs.SE
Do AI models help produce verified bug fixes?
Constructor Institute of Technology(构造技术研究所)
本研究通过随机对照实验,利用程序证明环境验证修复正确性,探究LLM在自动程序修复中的实际效用,发现结果出乎意料,并贡献了可复用的实验方法、行为分析、7类使用模式及实用建议。
2025-08-04 cs.AI cs.SE
What Makes Programmers Laugh? Exploring the Submissions of the Subreddit r/ProgrammerHumor
本研究通过分析 Reddit 上 139,718 条编程幽默投稿,发现预测幽默困难(最佳模型仅解释 10% 方差),并识别出高分投稿特征(冬季、周末下午、图像形式、优越/失谐理论、学习主题),提供复现包供未来研究。
2024-12-17 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
Minimalistic Terminal Editor for Julia Programming -- MinTEJ: A Friendly Approach for a Scientific Programmer
Hitachi Energy Technology Services Private Limited(日立能源技术服务私人有限公司);Indian Institute of Technology Bombay(印度孟买理工学院);Newcastle University in Singapore(新加坡纽卡斯尔大学)
本文提出MinTEJ,一种基于终端的Julia编辑器,采用顺序模式交互架构,整合文件管理、代码编辑、执行和调试,降低认知负荷和错误率。
2026-05-12 cs.PL cs.SE
WhyFlow: Interrogative Debugger for Sensemaking Taint Analysis
WhyFlow是一种面向终端用户的问答式调试界面,用于提升污点分析中的理解过程,通过问答机制帮助用户发现可疑流动并分析第三方库模型的影响。
2025-12-03 cs.SE
Reasoning Trajectories for Socratic Debugging of Student Code: From Misconceptions to Contradictions and Updated Beliefs
University of North Carolina at Charlotte(北卡罗来纳州夏洛特大学)
本文提出推理轨迹生成任务,通过标注的调试问题数据集探讨生成推理轨迹和基于LLM的苏格拉底对话方法,实验显示LLM能生成91%正确的推理轨迹和98.7%有效的对话内容。
2026-05-11 cs.CL cs.CY cs.SE
Causes and Effects in Computer Programs
故障诊断通常被理解为查找并修复问题的原因。“原因”是什么意思?我们如何找到原因?我们如何证明一个原因是一个原因--甚至是“那个”原因?本文定义了调试中的常用术语,强调了主要技术,它们的能力和局限性。
2003-09-24 cs.SE
Evolution of Programmers' Trust in Generative AI Programming Assistants
研究程序员使用GitHub Copilot后信任度的动态演变,发现信任度随时间提升,并基于定量与定性分析提出四项CS教学建议以帮助学生校准对AI助手的信任。
2025-09-16 cs.HC cs.SE
Exploring and Characterizing Large Language Models For Embedded System Development and Debugging
University of Washington(华盛顿大学)
本文开发了开源硬件在环框架评估LLMs在嵌入式系统开发中的能力,发现GPT-4具备跨领域推理优势,并提出人机协作工作流显著提升了不同经验开发者的生产力与成功率。
2023-11-22 cs.AI cs.SE
Auto-repair without test cases: How LLMs fix compilation errors in large industrial embedded code
本研究利用LLM自动修复工业嵌入式系统编译错误,在超4万提交数据上,解决63%错误且83%修复合理,大幅缩短调试时间。
2025-10-15 cs.SE
Closed source versus open source in a model of software bug dynamics
我们介绍了一个简单的微观描述的软件错误动态用户,程序员和维护人员通过一个给定的程序进行交互,特别强调错误的创建,检测和修复。当程序从零开始编写时,开发的第一阶段的特点是错误数量快速下降,然后是一个缓慢的阶段,大多数错误已经被修复,因此很难找到。立即发布bug修复可以加快调试过程,这也是bazaar开源方法论的实质。我们提供了一个数学分析,支持我们的数值模拟。最后,我们将我们的模型应用于Linux的历史,并确定其程序员的质量存在一个下限。
2005-09-05 cond-mat.stat-mech 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
Practitioners' Expectations on Code Completion
代码补全已经成为程序员在日常编程活动中的一种常见做法。它旨在自动预测程序员倾向于使用的下一个标记或行。一个好的代码补全工具可以大大节省程序员的时间,提高编程效率。最近,已经提出了用于代码完成的各种技术以用于实践。然而,目前还不清楚从业者对代码完成的期望是什么,以及现有的研究是否满足了他们的需求。为了填补这一空白,我们进行了一项实证研究,首先采访了15名从业人员,然后调查了来自18家IT公司的599名从业人员对代码完成的期望。然后,我们通过对2012年至2022年在主要出版场所发表的关于代码完成的论文进行文献综述,将从业者的需求与当前的研究进行比较。基于比较,我们强调了研究人员投资努力开发代码完成技术,以满足从业者的期望的方向。
2023-01-10 cs.SE
Which Code Statements Implement Privacy Behaviors in Android Applications?
本研究通过实证分析确定了Android代码中与隐私行为最相关的语句类型,并提出了一种基于微调三个大型语言模型的自动检测方法,其与人工判断的一致性达到或超过人工间一致性水平。
2025-03-03 cs.SE
Understanding How Programmers Can Use Annotations on Documentation
现代软件开发要求开发人员找到并有效地利用新的API及其文档,但文档有许多众所周知的问题。尽管如此,开发人员最终克服了这些问题,但无法分享他们学到的东西。我们研究通过\textit{annotations}共享此特定于文档的信息,这比开发人员论坛具有优势,因为信息是上下文化的,不具有破坏性,并且简短,因此易于创作。开发人员还可以编写注释来支持自己的理解。为了支持我们发现的文档使用行为,我们构建了Adamite注释工具,它支持多锚定、注释类型和固定等特性。在我们的用户研究中,我们发现开发人员能够创建对自己有用的注释,并且能够在学习新API时利用其他开发人员创建的注释,注释的读者平均比基线多完成67%的任务。
2022-01-11 cs.HC 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
What Skills Do You Need When Developing Software Using ChatGPT? (Discussion Paper)
本研究针对当前关于LLM编程工具作用的无根据言论,通过实验发现计算思维技能可预测使用LLM工具开发软件的能力,并呼吁学界通过实验进一步明确不同场景下使用LLM开发软件所需的技能。
2023-10-09 cs.CY cs.SE
Human Attention During Localization of Memory Bugs in C Programs
University of Notre Dame(圣母大学);Vanderbilt University(范德堡大学)
研究人类在 C 程序中定位内存错误时的视觉注意力,招募 21 名程序员在三个程序中定位内存错误,收集 31 小时观察数据,分析成功率等任务结果、总体视觉注意力模式及成败案例中视觉注意力模式差异。
2026-07-20 cs.SE
A New Generation of Intelligent Development Environments
本文提出将传统 IDE 演进为智能开发环境,由程序员管理 AI 智能体与自动化工具协同组装 API、包和新代码,并梳理从需求到部署验证的工作流及挑战。
2024-06-13 cs.PL cs.SE
Next-Paradigm Programming Languages: What Will They Look Like and What Changes Will They Bring?
程序设计语言设计的梦想是在软件开发任务中带来数量级的生产力改进。设计师可以无休止地争论如何实现这个梦想,以及我们离实现这个梦想有多近。相反,我想关注一个问题,这个问题的答案可能会令人惊讶地更清晰:下一个范式、高生产力程序设计语言背后的共同原则是什么?它们将如何改变日常程序开发?根据我十多年的声明性语言繁重开发经验,我推测高生产力语言的某些原则是不可避免的。这些包括,例如,性能上的巨大变化(包括改变算法渐近复杂性的自动转换);程序员工作流程的根本变化,将测试从一个近乎卑微的任务提升到深入理解的行为;对形式证明的需求的变化;等等。
2019-05-01 cs.PL cs.SE
How Researchers Use and Verify AI Coding Assistants: Tasks and Validation Practices in Scientific Programming
University of Michigan(密歇根大学);Sandia National Laboratories(桑迪亚国家实验室);University of Tennessee, Knoxville(田纳西大学诺克斯维尔分校)
本研究通过调查527名科研人员,发现AI编程助手主要用于数据处理等五类任务,验证方式以个人运行为主,且信心与经验相关,建议界面支持任务适配的评估。
2026-09-21 cs.HC 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
LAMBDA: A Large Model Based Data Agent
The Hong Kong Polytechnic University(香港理工大学)
LAMBDA是一种基于大模型的数据代理系统,通过程序员和检查员协作实现无需代码的数据分析,提升数据分析的可访问性和效率。
2025-05-28 cs.AI cs.LG cs.SE