Not since 2009. I simply put print statements on strategic places, and through a process of elimination I find the issue 99% of the time. Most of the time I never go beyond 15-30 minutes.
Sometimes it takes hours, sure, but I'm not seeing how a debugger would accelerate that (since in those cases I have to wrangle a lot of external state like DBs and VMs/containers). Debuggers are a pain to learn and utilize to their full capability.
Am I missing out? I'm not saying that I'm not but haven't practically felt the actual need for a debugger in a long time.
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.
Sometimes it takes hours, sure, but I'm not seeing how a debugger would accelerate that (since in those cases I have to wrangle a lot of external state like DBs and VMs/containers). Debuggers are a pain to learn and utilize to their full capability.
Am I missing out? I'm not saying that I'm not but haven't practically felt the actual need for a debugger in a long time.