While I used to like debuggers, recently I've found them to be a giant pain.<p>First, process boundaries. If you're using a complicated stack, it's likely that you'll need to set up multiple debuggers for different processes and switch between them.<p>Second, languages. If you're using different languages, or a combination of languages, debuggers can be very painful. Each usually has a settings overhead per project for finding source code files, etc.<p>Some bugs just don't reproduce in debuggers, anything with multithreading or timing is instantly troublesome.<p>Also, in production, you rarely have the option of a hooking up a debugger to a live service. By not relying on the debugger up to this point, you hopefully have a robust logging system that can be configured to give you the detail you want at the time. The messages will hopefully be informed by previous debugging sessions, and help get you to your solution more quickly.