Many studies have long investigated how developers debug, shaping our understanding of debugging and helping motivate the creation of more effective tools. However, less is known about the typical progression of debugging in real world settings. In this study, we focus on characterizing debugging episodes from the moment at which developers first encounter a defect to the moment at which it is resolved. We investigate the typical duration and frequency of debugging episodes and the typical activities which occur. We observed developers by watching professional developers at work in live-streamed programming sessions. Using this data source, we curated 15 sessions in which 11 professional developers worked for 30 hours. We then systematically coded the debugging episodes and activities that occurred within these videos, yielding a dataset of 2137 debugging activities and 1407 programming activities. We found that debugging was frequent, even in programming work, occurring once every eight minutes. Debugging episodes vary greatly in time, with most being less than a few minutes and a few as more than 100 minutes. However, most debugging time is spent in long debugging episodes. We found no single activity that dominated debugging time, and long debugging episodes often involved many diverse activities. Finally, we found that,in terms of the activities developers did, programming and debugging were remarkably similar, particularly in the frequency of editing and browsing code.
翻译:许多研究长期调查了开发者如何调试,如何理解调试和帮助激励创建更有效的工具。然而,对于在现实世界环境中调试的典型进展,我们了解得较少。在本研究中,我们侧重于从开发者首次遇到缺陷的那一刻到解决缺陷的那一刻的调试事件特征。我们调查调试事件和典型活动的典型持续时间和频率以及发生的典型活动。我们通过在现场直播的编程会议中观看专业开发者,观察了开发者。我们利用这个数据源,整理了15次会议,11个专业开发者在其中工作了30小时。然后系统编码了这些视频中出现的调试事件和活动,产生了2137调试活动和1407个编程活动的数据集。我们发现调试经常发生,甚至在每8分钟一次的编程工作中发生一次。调试事件在时间上变化很大,多数时间不到几分钟,有100分钟以上。但是,大多数调试时间花在长期调试事件中。我们发现没有一种活动,特别是在调试探时间上,我们发现了许多繁杂的编程中,最后发现许多的编校程活动是反复的,我们发现了一个活动。