Ask HN: DDD was a great debugger – what would a modern equivalent look like?

Old-school debugger nostalgia sparks a print-vs-time-travel smackdown

TLDR: A beloved old debugger sparked a debate on what a modern version should be. The crowd split between “just print messages” pragmatists, links to tools like Whitebox and DDT, and skepticism of fancy time-travel debuggers, showing developers want clearer visibility but don’t trust magic solutions.

An old favorite called DDD (a classic tool that let you literally watch a program run) got a love letter—and a big question: what would a modern equivalent look like? Cue the crowd: one person drops a link to whitebox.systems with a shrug, another name-drops enterprise gear like DDT, and a third swoons over the full-fat Visual Studio debugger. But the loudest chorus? “Just print it.” One comment basically throws down a caveman club: printf("Got here, x=%u"\n", x);—a meme-level reminder that many developers still debug by sprinkling messages through their code.

The drama heats up when someone asks “Domain driven design?” mistaking DDD for a management buzzword, which the thread gleefully turns into a running gag. Then comes the hot take that time-travel debugging—like rr—sounds magical but “never worked” on their real-world projects, stoking a theory vs reality flame war. Fans of big, visual tools want a “control center” for today’s messy, multi-threaded, cloud-y code; pragmatists clap back that logs rule, fancy UIs drool. The vibe? Nostalgia meets modern chaos, with the crowd split between wanting a spaceship cockpit and just slapping on more sticky notes. And everyone agrees: most debuggers still feel like nicer versions of old-school “step, step, step.”

Key Points

  • The post praises DDD’s ability to visualize program execution (stacks, data, control flow).
  • DDD is characterized as suited to older software assumptions: single-process, mostly synchronous, and limited concurrency support.
  • Modern debugging must address multithreading, async runtimes, long-running services, and distributed components.
  • Many current debuggers still rely on a GDB-like stepping model despite evolving software complexity.
  • The author seeks community input on which legacy ideas remain useful, requirements for a modern debugger, and the validity of interactive debugging today.

Hottest takes

printf("Got here, x=%u"\n", x); — martijnvds
Domain driven design? — buster
rr is impressive in theory, although it never worked — galkk
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.