Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I read and studied a lot of computer science and engineering and I rarely or never seen a book about debugging or a theory how to debug (though I surely developed some debugging theories of my own).

Are there any debugging theories and/or books? Why / why not? I can read how to debug using gdb and some of the most useful info about development I got from reading how to use gdb.

share|improve this question

closed as off-topic by gnat, MichaelT, Bart van Ingen Schenau, BЈовић, World Engineer Mar 17 at 13:15

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, MichaelT, Bart van Ingen Schenau, BЈовић, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

1  
What do you mean by saying debugging theory? What topics should it cover? –  superM Aug 10 '12 at 8:05
5  
Two papers you'll (probably) find interesting: A theory of debugging plans & interpretations & Algorithmic Program Debugging –  Yannis Rizos Aug 10 '12 at 8:18
    
Yes that is called problem solving : en.wikipedia.org/wiki/Problem_solving –  AndreasScheinert Aug 10 '12 at 9:00
1  
@SoboLAN I thought the asker wanted the actual theory behind debugging, and 82/88 isn't that old, the core concepts are the same... But yeah, not what the question is about. –  Yannis Rizos Aug 10 '12 at 10:01
1  
A lot of concept in software engineering today are quite old, yet they still apply very well to today's situation. Let's not forget, the wheel was developed millions of years ago, and yet none of us have a problem driving on 2 or 4 of them every day of our lives lol –  user60812 Aug 10 '12 at 12:19

3 Answers 3

up vote 5 down vote accepted

I read the Debug IT from Pragmatic programmers. As almost all books from pragmatic programmers, it's pretty hands-on but not so deep, but was nice to help me to teach new developers how to set their "debug mindset". There are no black magic, but more common sense and almost everything looks really intuitive for experienced programmers.

share|improve this answer

There is Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems. I don't remember it to be terribly deep or at all academic, but it certainly has some interesting insights and stories.

It's also very useful to see debugging from the hardware perspective--generally, debugging hardware is more difficult than debugging software. Each chapter of the book is motivated by a "war story" from the author's experience; the rest of the chapter goes over what technique he found useful in that particular case. The stories are a nice mix of both hardware and software development.

I certainly found the approach of starting each chapter with a real-life story very instructive.

share|improve this answer
1  
+1 I have a copy of that book, and I must say, it's really well written. It's generic in that you could debug anything using the rules that the author suggests : software faults, hardware issues, problems with the toilet, anything really :) –  Jason Evans Aug 10 '12 at 20:43
1  
This is a great book. One of the best insights I took from it was the idea of not only fixing a problem, but then taking the fix back out to confirm that the problem still occurs without it. After you've tried ten things to fix a problem, at the end, if you omit this step, you may not know which one was the real fix. –  Kyralessa Aug 10 '12 at 20:45

The Saff Squeeze is a technique described by Kent Beck which uses tests and refactoring for debugging:

Hit 'em High, Hit 'em Low:

Regression Testing and the Saff Squeeze

Kent Beck, Three Rivers Institute

Abstract: To effectively isolate a defect, start with a system-level test and progressively inline and prune until you have the smallest possible test that demonstrates the defect.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.