Towards a Neural Debugger for Python
作者: Maximilian Beck, Jonas Gehring, Jannik Kossen, Gabriel Synnaeve
分类: cs.LG, cs.AI, cs.SE
发布日期: 2026-03-10
备注: 22 pages
💡 一句话要点
提出神经调试器,通过模拟调试操作实现对Python代码执行过程的交互式控制。
🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 神经调试器 语言模型 代码调试 程序理解 交互式控制 条件执行 代码生成 CruxEval
📋 核心要点
- 现有神经解释器缺乏交互式控制,开发者无法像使用传统调试器那样设置断点和单步调试。
- 论文提出神经调试器,通过语言模型模拟调试器的步入、步过等操作,实现对代码执行过程的交互式控制。
- 实验表明,神经调试器能够可靠地模拟正向和逆向执行,并在CruxEval上取得了良好的输出和输入预测性能。
📝 摘要(中文)
本文提出了一种神经调试器,旨在解决现有神经解释器缺乏交互式控制的问题。通过在大型语言模型(LLM)上进行微调或从头开始预训练较小的模型,神经调试器能够模拟传统调试器的操作,例如步入、步过、步出函数,以及在特定源代码行设置断点。实验结果表明,神经调试器能够可靠地模拟正向执行(预测未来状态和输出)和逆向执行(推断先前状态或输入),并根据调试器操作进行条件执行。在CruxEval上的评估表明,该模型在输出和输入预测任务上均表现出色,证明了其强大的条件执行建模能力。这项工作为未来的智能编码系统奠定了基础,神经调试器可以作为模拟调试环境的世界模型,提供执行反馈或使智能体与实际调试工具交互,从而实现更强大的代码生成、程序理解和自动调试。
🔬 方法详解
问题定义:现有神经解释器虽然能够预测Python程序的执行过程,但缺乏与传统调试器类似的交互式控制能力。开发者无法设置断点、单步执行,以及检查和修改变量,这限制了其在代码理解、调试和生成等方面的应用。
核心思路:论文的核心思路是利用大型语言模型(LLM)学习和模拟传统调试器的行为。通过训练模型理解调试器的各种操作(如步入、步过、步出、设置断点),使其能够根据这些操作预测程序的执行状态和输出,从而实现对代码执行过程的交互式控制。
技术框架:神经调试器的整体框架包括以下几个关键模块:1) 代码输入模块:接收Python源代码作为输入。2) 调试器操作输入模块:接收调试器操作指令(如“步入”、“步过”、“设置断点”)。3) 语言模型:使用预训练的LLM或从头训练的小型模型,作为核心的执行预测引擎。4) 执行状态预测模块:根据代码、调试器操作和历史执行状态,预测下一步的程序状态(变量值、执行位置等)和输出。5) 逆向执行推断模块:根据当前状态和调试器操作,推断之前的程序状态或输入。
关键创新:最重要的技术创新点在于将语言模型与调试器操作相结合,实现了对代码执行过程的条件建模。与传统的神经解释器相比,神经调试器能够根据用户的调试指令进行交互式执行预测,从而更贴近实际的开发调试场景。
关键设计:论文中涉及的关键设计包括:1) 调试器操作的编码方式:如何将调试器的各种操作转化为模型可以理解的输入表示。2) 训练数据的生成方式:如何生成包含代码、调试器操作和执行状态的训练数据。3) 损失函数的设计:如何设计损失函数,使得模型能够准确地预测程序的执行状态和输出,并能够进行逆向执行推断。具体的参数设置、网络结构等细节在论文中可能没有详细描述,属于未知信息。
🖼️ 关键图片
📊 实验亮点
实验结果表明,神经调试器在CruxEval数据集上取得了显著的性能提升,证明了其强大的条件执行建模能力。具体而言,该模型在输出和输入预测任务上均表现出色,能够准确地预测程序的执行状态和输出,并能够根据调试器操作进行交互式控制。具体的性能数据和对比基线在论文中可能有所体现,属于未知信息。
🎯 应用场景
神经调试器具有广泛的应用前景,可以用于自动化代码调试、程序理解、代码生成等领域。它可以作为智能编码系统的核心组件,为开发者提供实时的执行反馈和调试建议。此外,神经调试器还可以用于构建模拟调试环境,帮助智能体学习和掌握调试技能,从而提高代码生成的质量和效率。
📄 摘要(原文)
Training large language models (LLMs) on Python execution traces grounds them in code execution and enables the line-by-line execution prediction of whole Python programs, effectively turning them into neural interpreters (FAIR CodeGen Team et al., 2025). However, developers rarely execute programs step by step; instead, they use debuggers to stop execution at certain breakpoints and step through relevant portions only while inspecting or modifying program variables. Existing neural interpreter approaches lack such interactive control. To address this limitation, we introduce neural debuggers: language models that emulate traditional debuggers, supporting operations such as stepping into, over, or out of functions, as well as setting breakpoints at specific source lines. We show that neural debuggers -- obtained via fine-tuning large LLMs or pre-training smaller models from scratch -- can reliably model both forward execution (predicting future states and outputs) and inverse execution (inferring prior states or inputs) conditioned on debugger actions. Evaluated on CruxEval, our models achieve strong performance on both output and input prediction tasks, demonstrating robust conditional execution modeling. Our work takes first steps towards future agentic coding systems in which neural debuggers serve as a world model for simulated debugging environments, providing execution feedback or enabling agents to interact with real debugging tools. This capability lays the foundation for more powerful code generation, program understanding, and automated debugging.