Zen and the Art of Software Debugging

Zen and the Art of Software Debugging

The Age-Old Debate: Art versus Science

There has always been a debate if software debugging is an art or a science.

Some engineers take the romantic approach to software integration: they write the code and debug with inspiration and intuition. Living in the moment, they forego rational analysis or repeatable processes. When confronted with an issue, they follow gut instincts and change their code often without even making a backup in case the assumption was wrong. They doggedly stack patches on top of patches or introduce more problems when trying to back out the changes at a later date.

On the other side, some software developers follow the traditional approach: they try to diagnose and solve the problem by rigidly following a step-by-step debugging methodology. They become frustrated when the real world does not function the same as the world described in the programming books. Because of their dedication to ritual, technology transforms into magic and it becomes unpredictable and time-consuming. They try the same techniques over and over again vainly hoping for a different result.

Perhaps the best programmer is the one that embraces debugging as both an art and a science. When debugging, bursts of creativity and intuition must work in harmony with rational problem-solving skills along with the best available tools.

Zen and the Art of Software Debugging

Figure 1: Three categories of software bugs

Download the white paper to learn more.

  • Approaches to debugging
  • Three categories of software bugs
  • Tracepoints, sparklines, and watchpoints
  • Memory overwrites