I Don't Like Debuggers (2000)
What a line:<p>&gt; And quite frankly, I don&#x27;t care. I don&#x27;t think kernel development should be &quot;easy&quot;. I do not condone single-stepping through code to find the bug.<p>Reminds me of this quote from the introduction to Log4j docs [0]:<p>&gt; As Brian W. Kernighan and Rob Pike put it in their truly excellent book &quot;The Practice of Programming&quot;:<p>&gt;&gt; As personal choice, we tend not to use debuggers beyond getting a stack trace or the value of a variable or two. One reason is that it is easy to get lost in details of complicated data structures and control flow; we find stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places. Clicking over statements takes longer than scanning the output of judiciously-placed displays. It takes less time to decide where to put print statements than to single-step to the critical section of code, even assuming we know where that is. More important, debugging statements stay with the program; debugging sessions are transient.<p>The above quote made me reconsider my intense debugger usage that I had fallen into at the time. On one hand you can&#x27;t take all your cues from authority, but on the other hand, what K&amp;P said sounded like it might make sense. So I tried using the debugger less and logging more, and over time I think it&#x27;s made me a better programmer. I think the key statement is:<p>&gt; we find stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places.<p>which Linus also echoes:<p>&gt; I happen to believe that not having a kernel debugger forces people to think about their problem on a different level than with a debugger. I think that without a debugger, you don&#x27;t get into that mindset where you know how it behaves, and then you fix it from there. Without a debugger, you tend to think about problems another way. You want to understand things on a different _level_.<p>[0]: <a href="https:&#x2F;&#x2F;logging.apache.org&#x2F;log4j&#x2F;2.x&#x2F;manual&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;logging.apache.org&#x2F;log4j&#x2F;2.x&#x2F;manual&#x2F;index.html</a>