What we can learn from how programmers debug their code
Thomas Hirsch, Birgit Hofer

TL;DR
This study investigates programmers' debugging practices, revealing that most bugs are semantic, with memory and concurrency bugs being less frequent but more time-consuming, emphasizing the need for better IDE-integrated debugging tools.
Contribution
The paper provides empirical insights into real-world debugging behaviors and highlights key areas for developing more effective debugging approaches, especially for complex bug types.
Findings
Most bugs are semantic (69.6%)
Memory and concurrency bugs are less frequent but take more debugging time
Locating bugs is more difficult than reproducing or fixing them
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
