Real Men don't use debuggers
stackoverflow.com
stackoverflow.com
Step 3 and 4 (use asserts and logging) are also pretty great, but with a debugger, you can do nonce asserts and observations as you trace through the code rather than trying to guess at the beginning of every compile cycle what needs to be asserted or logged. If you want to assert and log everything a debugger might catch, you're just insane. I'm not logging every state change as it happens.
Step 2, 5, and 6 are refactoring, unit testing, and code review. I am all for them, but they don't always solve the same problem as debugging. I'd rather give up debugging than give up refactoring, unit testing, and code review, but no one says you have to.
That said, on the occasion when a bug does crop up (which will hopefully be rarely), the debugger is usually the fastest way to find the problem. A good programmer will be sure to root cause the problem rather than fixing the symptom. Debuggers are indispensable tools for working up the causality chain.