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.
翻译:研究人员开发了许多调试方法以帮助调试过程中的程序员,但这些方法很少在实践中使用。在本文中,我们调查程序员如何调试其代码,以及研究人员在开发调试方法时应考虑什么。我们进行了一个在线问卷调查,102个程序员提供了最近安装的错误的信息。我们发现大多数错误(69.6%)都是语义错误。内存和同值通货错误并不经常发生(6.9%和8.8%),但它们消耗的调试时间更多。找出一个错误比再生和修补它更困难。程序员通常只使用 IDE 构建工具进行调试。此外,程序员在调试时经常使用复制-观察-调试模式。这些结果表明,调试支持对于记忆和同值错误特别有用。此外,研究人员应该把重点放在错误的本地化阶段,并将其工具整合到常用的 IDE 中。