And if the code the client throws at you needs a debugger to trace it through, I'd argue it's not maintainable, and should die the death it deserves. I can't tell you how many pieces of code (or entire programs) I've just simply thrown away and rewritten.
This is the final fate of much of the code that I see as well.
Of course, then you discover that there's no spec for the program and the person who wrote it left three years ago so the only way to rewrite it is to work out exactly how it works - and suddenly I'm back in the debugger :)
Maybe I need to choose my clients with more care!--
"Perl makes the fun jobs fun
and the boring jobs bearable" - me