What constitutes debugging? An exploratory study of debugging episodes

What constitutes debugging? An exploratory study of debugging episodes
复制标题

DOI:
10.1007/s10664-023-10352-5
复制
发表时间:
2023-09
影响因子:
4.1
通讯作者:
Abdulaziz Alaboudi;Thomas D. Latoza
Abdulaziz Alaboudi;Thomas D. Latoza
中科院分区:
计算机科学2区
文献类型:
--
作者:
Abdulaziz Alaboudi;Thomas D. Latoza

文献摘要

被引文献

相似文献

在调试时,开发人员从事诸如导航、编辑、测试和检查代码之类的活动。尽管它们是调试的构建块,但人们对它们如何构成调试知之甚少。为了解决这个差距,我们引入了“调试插曲”的概念,它包含了从开发人员第一次调查缺陷到修复缺陷或开发人员停止的时间。我们观察了11位从事开源项目的专业开发人员,编写了89个调试片段和2135个在调试过程中发生的活动实例。确定了六个活动:导航、编辑、测试、检查、咨询资源和其他杂项活动。我们发现开发人员在调试期间花费了最多的时间编辑(41%)和测试(29%)。当处理耗时的缺陷时,开发人员从事更多不同类型的调试活动,花费更多的时间检查程序状态、导航代码和咨询外部资源,并且花费更少的时间进行测试。我们发现,与组成实现工作的活动相比,开发人员在调试时所做的活动更相似,而不是不同。开发人员在调试和实现工作期间花费了相似的编辑和导航时间。然而,调试涉及的检查时间(16%)明显多于实施工作(2%),而实施工作涉及的咨询资源时间(24%)明显多于调试(6%)。我们对10位开发人员进行了半结构化访谈,以深入了解导致开发人员在较长调试阶段参与更多活动的挑战。我们的发现为调试过程和开发人员所面临的挑战提供了深入的见解,为调试工具的设计、改进的调试教育和未来的研究提供了启示。
When debugging, developers engage in activities such as navigating, editing, testing, and inspecting code. Despite being the building blocks of debugging, little is known about how they constitute debugging. To address this gap, we introduce the concept of a “debugging episode” which encompasses the time from when a developer first investigates a defect until when the defect is fixed or the developer stops. We observed 11 professional developers working on open source projects, coding 89 debugging episodes and 2135 instances of activities that occurred during them. Six activities were identified: navigate, edit, test, inspect, consult resources, and other miscellaneous activities. We found that developers spent the most time editing (41%) and testing (29%) during debugging. When addressing time-consuming defects, developers engaged in more diverse types of debugging activities, spent more time inspecting program state, navigating code, and consulting external resources, and spent less time testing. We found that the activities developers do while debugging were more similar than different than the activities that make up implementation work. Developers spent a similar fraction of their time editing and navigating during debugging and implementation work. However, debugging involved significantly more time inspecting (16%) than implementation work (2%), while implementation work involved more time consulting resources (24%) than debugging (6%). We conducted semi-structured interviews with ten developers to gain insights into the challenges that cause developers in longer debugging episodes to engage with more activities. Our findings offer insight into the debugging process and the challenges that developers confront, offering implications for the design of debugging tools, improved debugging education, and future research.