I've written code to print scripting language stack traces when native code segfaults.
I've written code to auto-collect crashdumps from coworkers, and add important globals (or what they point to) to said crashdumps when collecting full 32GB+ memory dumps are impractical.
In-process debug toggles might show graphs or annotations that provide much more intuitive and visual alternatives to printf spam.
Unit and fuzz tests help catch things before they manifest in the wild.
GDB/LLDB supports python scripts which let you customize the debug view of some of your more opaque types. MSVC has .natvis files, which despite being awkward XML soup, can also be quite useful.
I've written code to print scripting language stack traces when native code segfaults.
I've written code to auto-collect crashdumps from coworkers, and add important globals (or what they point to) to said crashdumps when collecting full 32GB+ memory dumps are impractical.
In-process debug toggles might show graphs or annotations that provide much more intuitive and visual alternatives to printf spam.
Unit and fuzz tests help catch things before they manifest in the wild.
GDB/LLDB supports python scripts which let you customize the debug view of some of your more opaque types. MSVC has .natvis files, which despite being awkward XML soup, can also be quite useful.