A Unified Debugging Approach via LLM-Based Multi-Agent Synergy

2024年04月26日
  • 简介
    近年来,人们已经投入了大量精力来自动化软件调试,这是一个耗时的过程,涉及故障定位和修复生成。最近,大型语言模型(LLM)在自动调试方面显示出了巨大潜力。然而,我们发现传统和基于LLM的调试工具面临着三个挑战:1)故障定位的上游不完美会影响下游的修复;2)处理复杂逻辑错误的不足;3)忽略程序上下文。在这种情况下,我们提出了第一个自动化的、统一的调试框架——FixAgent,通过LLM代理协同作用。FixAgent可以执行端到端的故障定位、修复和分析。我们的想法是,LLM可以从人类开发人员在调试中认可的通用软件工程原则中受益,如橡皮鸭调试,从而更好地理解程序功能和逻辑错误。因此,我们创建了三个受橡皮鸭调试启发的设计来解决这些挑战。它们是代理专业化和协同作用、关键变量跟踪和程序上下文理解,这些要求LLM提供明确的解释,并迫使它们关注关键的程序逻辑信息。在广泛使用的QuixBugs数据集上的实验表明,FixAgent正确修复了80个中的79个错误,其中有9个以前从未被修复过。即使没有故障位置信息和少于0.6%的采样时间,它也比CodeFlaws上表现最佳的修复工具更可信地修补了1.9倍的缺陷。平均而言,FixAgent相对于使用不同LLM的基础模型平均增加了约20%的可信和正确的修复,显示出我们设计的有效性。此外,FixAgent的正确率达到了惊人的97.26%,表明FixAgent有可能克服现有方法的过度拟合问题。
  • 图表
  • 解决问题
    本文提出了一种基于大型语言模型(LLMs)的自动化统一调试框架FixAgent,旨在解决传统和LLM调试工具面临的三个挑战:故障定位的不完善、处理复杂逻辑错误的不足以及对程序上下文的忽视。
  • 关键思路
    通过借鉴橡皮鸭调试等软件工程原则,创造了三种基于LLMs的设计来解决这些挑战,包括Agent专业化与协同、关键变量跟踪、程序上下文理解。
  • 其它亮点
    FixAgent可以执行端到端的故障定位、修复和分析,能够正确修复QuixBugs数据集中的79个缺陷,其中9个以前从未被修复过。在CodeFlaws数据集上,FixAgent比最佳修复工具多修复了1.9倍的缺陷,即使没有故障定位信息和少于0.6%的采样时间。平均而言,FixAgent相比于基于不同LLMs的基础模型,可以增加约20%的可信和正确修复。此外,FixAgent的正确率显著达到97.26%,表明它可以潜在地克服现有方法的过拟合问题。
  • 相关研究
    最近在这个领域中,还有一些相关的研究,如DeepFix、Astor、Prophet等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论