SEMar 23, 2021

What we can learn from how programmers debug their code

arXiv:2103.12447v114 citations
Originality Synthesis-oriented
AI Analysis

This work addresses the gap between research and practice in debugging tools for programmers, highlighting specific areas like memory/concurrency bugs and IDE integration for more effective support.

The study investigated how programmers debug their code by surveying 102 programmers, finding that 69.6% of bugs are semantic, while memory and concurrency bugs (6.9% and 8.8%) consume more debugging time, and fault localization is the most difficult phase.

Researchers have developed numerous debugging approaches to help programmers in the debugging process, but these approaches are rarely used in practice. In this paper, we investigate how programmers debug their code and what researchers should consider when developing debugging approaches. We conducted an online questionnaire where 102 programmers provided information about recently fixed bugs. We found that the majority of bugs (69.6 %) are semantic bugs. Memory and concurrency bugs do not occur as frequently (6.9 % and 8.8 %), but they consume more debugging time. Locating a bug is more difficult than reproducing and fixing it. Programmers often use only IDE build-in tools for debugging. Furthermore, programmers frequently use a replication-observation-deduction pattern when debugging. These results suggest that debugging support is particularly valuable for memory and concurrency bugs. Furthermore, researchers should focus on the fault localization phase and integrate their tools into commonly used IDEs.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes