in reply to I never use the debugger.

From my perspective there isn't very much difference between using the debugger and sprinkling print statements through your code. In either case you're running your program in a way which gives you information about its internal state as it runs. The biggest difference is the level of interactivity: the debugger offers immediate access during a run but print statements require a new run to take affect.

I've used the debugger a few times, most often when I'm working on a program that takes a long time to get into a bad state. In this case the extra time needed to add a new print statement and get the result after a new run is too high.

Another good use is to figure out what your program is doing when it's locked up and you can't guess a good spot to put a print. The debugger can answer that question very quickly indeed!

-sam