[论文解读] An Exploratory Study of Debugging Episodes
本研究分析了11名专业开发人员的30小时直播编程会话,以描述现实世界中的调试过程。通过对2,137次调试活动和1,407次编程活动进行定性编码,研究发现开发人员平均每八分钟调试一次,调试占其总工作时间的一半左右,且涉及高度多样化、多样的活动,尤其在长时间调试会话中更为明显。研究结果挑战了将调试视为纯粹故障定位的观点,表明需要集成化调试工具,以减少在编辑、测试、浏览和使用外部资源之间的上下文切换。
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个直播编程会话中收集数据,共获得30小时的视频资料。
- 他们使用自定义的基于网络的工具Observe-dev.online,将视频片段编码并标注为三类:编程、调试和无关活动。
- 编码过程系统且迭代,研究人员识别并标记了诸如编辑、浏览、测试、检查程序状态以及查阅外部资源等活动。
- 数据集包含2,137次调试活动和1,407次编程活动,支持对行为模式的定量与定性分析。
- 该平台支持协作标注、时间轴可视化和数据共享,确保了编码过程的可重现性与透明性。
- 分析聚焦于调试会话的持续时间、频率及活动多样性,与一般编程工作的表现进行对比。
实验结果
研究问题
- RQ1在现实编程工作中,调试会话发生的频率如何?
- RQ2调试会话的典型持续时间是多少?其在不同会话中如何变化?
- RQ3开发人员在调试会话中执行哪些类型的活动?这些活动与编程活动有何不同?
- RQ4短会话与会长会话中的活动多样性与顺序有何差异?
- RQ5在代码浏览、编辑、测试及外部资源使用方面,调试与编程行为有何不同?
主要发现
- 开发人员平均每八分钟进行一次调试,表明调试是开发过程中的频繁且核心组成部分。
- 调试占观察到的总编程时间的约一半,共记录15小时的调试时间,分布在89个独立会话中。
- 大多数调试会话时间较短(几分钟内),但绝大多数调试时间集中在较长的会话中——部分会话超过100分钟。
- 没有单一调试活动占据主导时间;相反,长时间会话涉及编辑、浏览、测试、检查程序状态以及查阅外部资源等多种活动的混合。
- 编程与调试行为在代码编辑和浏览频率上极为相似,表明导航与修改是两类活动的核心。
- 调试与编程的主要差异体现在测试和程序状态检查上,表明调试涉及超越常规编辑与导航的更深层次行为分析。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。