If you need to track down bugs whose „lead time“ are not in seconds/minutes but hours, you‘ll need a debugger. E.g. a bug only happens after some previous long-running task is run.
Oh, absolutely. But to me writing programs that way is a malpractice :D so I strive very hard to not have code and/or whole programs acting like this (long lead times as you said). So I break it down on smaller chunks and cover those with tests, extensively.
Definitely not a bullet-proof strategy but it gets me 90% of the way. The rest 10% I work hard to cover with telemetry / logs / "debug" print statements.
I mean don't get me wrong, I've done some pretty amazing things with `gdb` a loooooong time ago but gradually, as my career took a sharp turn mostly into backend web development, I lost the need for a debugger.
Since I am looking to branch out of web development again and likely land in Rust / OCaml lands, I'll probably need to relearn debuggers.
If you need to track down bugs whose „lead time“ are not in seconds/minutes but hours, you‘ll need a debugger. E.g. a bug only happens after some previous long-running task is run.