InspectCoder: Dynamic Analysis-Enabled Self Repair through interactive LLM-Debugger Collaboration
Yunkun Wang, Yue Zhang, Guochang Li, Chen Zhi, Binhua Li, Fei Huang, Yongbin Li, Shuiguang Deng
TL;DR
InspectCoder introduces a novel agentic program repair framework that enables LLMs to perform dynamic analysis via interactive debugger collaboration. By pairing a Program Inspector with a Patch Coder and coordinating through the InspectWare middleware, the system strategically places breakpoints, inspects runtime states, and perturbatively tests hypotheses to root-cause bugs and synthesize patches grounded in actual runtime evidence. Evaluations on BigCodeBench-R and LiveCodeBench-R across multiple SOTA LLMs show substantial improvements in bug resolution and repair efficiency compared to static or log-based baselines, driven by selective information gathering, reversible exploration, and real debugger integration. The work provides practical insights and a reusable middleware abstraction for deploying dynamic analysis in real-world automated software engineering, with generalizability across testing frameworks and potential cross-language extension. Overall, InspectCoder demonstrates the significant potential of combining agentic reasoning with interactive debugging to advance automated self-repair for software systems.
Abstract
Large Language Models (LLMs) frequently generate buggy code with complex logic errors that are challenging to diagnose. While existing LLM-based self-repair approaches conduct intensive static semantic analysis or reply on superficial execution logs, they miss the in-depth runtime behaviors that often expose bug root causes-lacking the interactive dynamic analysis capabilities that make human debugging effective. We present InspectCoder, the first agentic program repair system that empowers LLMs to actively conduct dynamic analysis via interactive debugger control. Our dual-agent framework enables strategic breakpoint placement, targeted state inspection, and incremental runtime experimentation within stateful debugger sessions. Unlike existing methods that follow fixed log collection procedures, InspectCoder adaptively inspects and perturbs relevant intermediate states at runtime, and leverages immediate process rewards from debugger feedback to guide multi-step reasoning, transforming LLM debugging paradigm from blind trial-and-error into systematic root cause diagnosis. We conduct comprehensive experiments on two challenging self-repair benchmarks: BigCodeBench-R and LiveCodeBench-R. InspectCoder achieves 5.10%-60.37% relative improvements in repair accuracy over the strongest baseline, while delivering 1.67x-2.24x superior bug-fix efficiency respectively. We also contribute InspectWare, an open-source middleware that abstracts debugger complexities and maintains stateful debugging sessions across mainstream Python testing frameworks. Our work provides actionable insight into the interactive LLM-debugger systems, demonstrating the significant potential of LLM-driven dynamic analysis for automated software engineering.
