一句话:提出交互式模拟调试方法,用故障定位与LLM引导学生修复程序,并开展小规模用户实验。
软件调试是软件工程的核心活动,但调试教学通常有限且非结构化,学生多靠临时方式学习。本文提出 Simulated Interactive Debugging,通过交互方式引导学生经历调试过程,帮助其修复程序并获得系统学习体验。原型结合传统故障定位技术与大语言模型,提供自动设置断点、交互式聊天机器人和断点解释等功能。作者设计并执行了包含八名本科计算机科学学生的小规模对照实验,参与者反馈喜欢这种系统化引导,认为自动设置断点最有效,其次是交互式调试与聊天,以及断点解释。未来将扩展概念与实现,并开展更深入的用户研究。
Debugging software, i.e., the localization of faults and their repair, is a key activity in software engineering. Therefore, effective and efficient debugging is one of the core skills a software engineer must develop. However, the teaching of debugging techniques is usually very limited or only taught in indirect ways, e.g., during software projects. As a result, most Computer Science (CS) students learn debugging only in an ad-hoc and unstructured way. In this work, we present our approach called Simulated Interactive Debugging that interactively guides students along the debugging process. The guidance aims to empower the students to repair their solutions and have a proper learning experience. We envision that such guided debugging techniques can be integrated into programming courses early in the CS education curriculum. We developed a prototypical implementation using traditional fault localization techniques and large language models. Students can use features like the automated setting of breakpoints or an interactive chatbot. We designed and executed a small-scale, controlled experiment with eight undergraduate CS students. Based on the responses, we conclude that the participants liked the systematic guidance. They rated the automated setting of breakpoints as most effective, followed by the interactive debugging and chatting, and the breakpoint explanations. In future, we will extend our concept and implementation, and perform more intensive user studies.
@inproceedings{paperbot9263,
title = {Simulated Interactive Debugging},
author = {Yannic Noller and Erick Chandra and Srinidhi Chandrashekar and Kenny Choo and Cyrille Jegourel and Oka Kurniawan and Christopher M. Poskitt},
booktitle = {ASE},
year = {2025},
doi = {10.1109/ase63991.2025.00338}
}