← Back to context

Comment by nonameiguess

12 days ago

The biggest issue for me is working on distributed systems. It's non-trivial to run many different servers and clients through a debugger all at the same time, components often have timeouts that are going to trigger due to the delay you'd cause even if you could, and much of the most vexing behavior happens in the networking stack rather than in your own software, and you can't run Linux in a debugger while also running your own software on top of the Linux that is in a debugger.

This is why we have logs, metrics, and traces. They attach at least some of the same instrumentation you'd get out of a debugger but all the time. You lose the flexibility to stop, step, and modify program behavior at runtime, but also gain data that is representative of what happens at full speed, which may be the only time certain bugs manifest anyway.