What I do is not really pure TDD. I usually don't have a very clear specification of what system needs to be doing (as it is an iterative process).
So I write the code and then write tests to see if it gives required outputs for given inputs.
Then I write tests to see if it behaves correctly under edge cases.
I also pretty much stopped using debuggers because of that. Simply there is no need. I can reproduce an error using the test and then fix the code until it passes it.