3 ms·
I use debuggers a lot, although I'm a special case because I also build debuggers. But I became a debugger builder because I was an unsatisfied debugger user (a
by roca 5y ago
I use debuggers a lot, although I'm a special case because I also build debuggers. But I became a debugger builder because I was an unsatisfied debugger user (as Mozilla developer working on Gecko, in particular).
A traditional forwards-in-time debugger like gdb sometimes beats print debugging, but often not or not by much. OTOH a reverse-execution-capable debugger like https://rr-project.org https://rr-project.org (disclaimer: I'm a maintainer) enables much more powerful debugging strategies like "set a data watchpoint and reverse-continue to where the value was written", which trumps print-debugging strategies in many cases (e.g. memory corruption). I use rr a lot to debug my main project, Pernosco. FWIW Pernosco is written in Rust, and it does have a fair bit of logging built into it, but I still find rr very useful there.
Pernosco itself is a new kind of debugger (see https://pernos.co https://pernos.co --- let me not be uncouth by promoting it too hard here). I don't use Pernosco to debug itself that much, partly because that's challenging for technical reasons, but also because it is certainly true that debugging tools are more valuable for large complicated projects you don't fully understand and Pernosco is not such a project (yet).