The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.Twenty-five years later this still seems true. Most programmers I know debug by printing stuff out. Even Linus Torvalds has famously criticized debuggers.
— Brian Kernighan, UNIX for Beginners, 1979.
Why is that? It's not technology - there are some beautiful integrated debuggers that let you hook deep into running code and poke around. And it's not ignorance, at least for me - I've had many happy experiences with fancy debuggers in the past. But I still keep going back to printing stuff out.
Why? For me it's about simplicity. Running a debugger on an active process is often awkward. And it's a bit spooky: I never quite fully understand what's going on. Still I can't help but feel like I'm working with stone age tools.