System debugging is the diagnostic and repair work that begins after a system fails, and it concludes with successful repair and testing of the product. The knowledge and skills of system debuggers are varied. Accordingly, this article will cover a diversity of topics, both psychological and technological, including traits of expert debuggers, mental representations used by experts for understanding systems, strategies used in debugging, social factors impacting debugging effectiveness, the management of debugging expertise, and debugging technologies and tools.
This article is organized in the following manner. After a brief discussion of the history of debugging, a five‐stage model of debugging is described, consisting of familiarization, stabilization, localization, correction, and validation. Several of these stages are used to organize the two following sections of this article, which concern the psychology and technology of debugging. This article concludes with a discussion of management issues relevant to system debugging.