The cout school of debugging has worked for me anywhere with output (and I don't understand the point of computing with no output?), don't need a fancy environment for that.
Stepping through code is nice when it works, but it often falls apart when there's concurrency, since all you get to step through are timeouts.