I also find that a debugger encourages a technique of just tracing through the code until "a-hah, that's where fooBing get reset to dingy. I should add a clause to reset it to dingy only if barBong is set."
Someone actually skilled in their craft would say:
"a-hah, that's where fooBing get reset to dingy. now I understand what's happening, let's understand why".
Remember, this is kernel code we're talking about here. In user-space, I rarely need to use a debugger because nearly all issues are caught during initial development by unit and regression testing.
However, there are still times where something goes terribly wrong -- sometimes in vendor code (or in the case of the kernel, hardware) -- and I wouldn't give up my debugger for the world.
No disagreement that debuggers are helpful, but they allow unskilled people to do more crap work without having to learn or think or improve, and that is what I believe Linus is going on about.
By all means, I don't agree with him that debuggers should be forbidden, but I believe I know where he's coming from.
Someone actually skilled in their craft would say:
"a-hah, that's where fooBing get reset to dingy. now I understand what's happening, let's understand why".
Remember, this is kernel code we're talking about here. In user-space, I rarely need to use a debugger because nearly all issues are caught during initial development by unit and regression testing.
However, there are still times where something goes terribly wrong -- sometimes in vendor code (or in the case of the kernel, hardware) -- and I wouldn't give up my debugger for the world.