DeepAI AI Chat
Log In Sign Up

An Exploratory Study of Debugging Episodes

by   Abdulaziz Alaboudi, et al.

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.


page 3

page 6

page 10


Edit-Run Behavior in Programming and Debugging

As developers program and debug, they continuously edit and run their co...

An Exploratory Study of Live-Streamed Programming

In live-streamed programming, developers broadcast their development wor...

VideoGraph: Recognizing Minutes-Long Human Activities in Videos

Many human activities take minutes to unfold. To represent them, related...

Swarm Debugging: the Collective Intelligence on Interactive Debugging

One of the most important tasks in software maintenance is debugging. To...

Do Developers Refactor Data Access Code? An Empirical Study

Developers often refactor code to improve the maintainability and compre...

Functional Baby Talk: Analysis of Code Fragments from Novice Haskell Programmers

What kinds of mistakes are made by novice Haskell developers, as they le...

Regexes are Hard: Decision-making, Difficulties, and Risks in Programming Regular Expressions

Regular expressions (regexes) are a powerful mechanism for solving strin...