Debug like a Human: A Large Language Model Debugger via Verifying Runtime Execution Step-by-step
Li Zhong, Zilong Wang, Jingbo Shang
大语言模型(LLMs)在代码生成方面取得了显著进展。除了单次代码生成,近期研究进一步将单元测试和程序验证器集成到LLMs中,以迭代地优化生成的程序。然而,这些工作将生成的程序视为一个不可分割的整体,这使得LLMs在调试程序时能力不足,尤其是当程序包含复杂的逻辑流和数据操作时。相比之下,人类开发者在调试程序时,通常会设置断点并有选择地检查运行时执行信息。执行流和中间变量在调试过程中起着至关重要的作用,但在现有的代码生成文献中却未得到充分利用。
在本研究中,我们引入了大语言模型调试器(Large Language Model Debugger, LDB),这是一个新颖的调试框架,使LLMs能够利用运行时执行信息来优化其生成的程序。具体来说,LDB将程序分割成基本块,并在整个运行时执行过程中跟踪每个块之后中间变量的值。这使得LLMs能够专注于整体执行流中更简单的代码单元,对照任务描述逐块验证其正确性,并高效地定位任何潜在错误。
实验表明,LDB在HumanEval、MBPP和TransCoder基准测试中,将基线性能持续提升了高达9.8%,为各种LLM选择在代码调试方面取得了新的最先进性能。