In the world of Linux development tools, debugging has long been dominated by GDB and LLDB - powerful but often criticized for their user experience. A new contender has emerged in this space: 'nnd', a debugger built from scratch that promises speed and usability improvements over traditional options.
A Fresh Approach to Linux Debugging
The new debugger 'nnd' takes inspiration from RemedyBG but creates its own path as a Terminal User Interface (TUI) debugger for Linux. What sets it apart is its focus on speed and responsiveness - a common pain point with existing tools. Unlike GDB or LLDB, 'nnd' is implemented mostly from scratch, allowing it to optimize for performance even when working with large executables like the 2.5 GB ClickHouse that the developer has tested it with.
Community reception highlights how the tool addresses longstanding frustrations with debugging workflows. One of its most appreciated features is the implementation of progress bars and asynchronous operations for tasks that typically cause debuggers to freeze or hang.
I wish this were more common, especially the progress bars thing.
This sentiment resonates with many developers who have experienced the frustration of waiting for debug symbols to load with no indication of progress. Another commenter mentioned how their previous job involved opening around 200 DLL plugins on startup, which would completely hang GDB during DWARF symbol indexing.
Limited But Focused Feature Set
While 'nnd' shows promise, it comes with clear limitations. It currently only supports Linux on x86 64-bit architecture and works exclusively with native code like C++ or Rust (not interpreted languages like Java or Python). The debugger also lacks remote debugging capabilities (though it works over SSH), doesn't follow forked processes, and has no record/replay functionality.
Despite these constraints, the focused approach appears to be winning fans. Several commenters drew comparisons to older tools they've missed, with one noting it reminded them of CodeView which I've been wishing I could have back since, and no, a gigantic pile of Emacs or vim plugins is not the equivalent.
nnd Debugger Key Properties
- Fast and responsive TUI (Terminal User Interface)
- Not based on GDB or LLDB, implemented mostly from scratch
- Works on large executables (tested on 2.5 GB ClickHouse)
- Asynchronous operations with progress bars
- Distributed as a single 6 MB executable with no dependencies
Current Limitations
- Linux only
- x86-64 architecture only
- Native code only (C++, Rust, etc.)
- TUI only (no REPL or GUI)
- No remote debugging (works over SSH)
- Single process (doesn't follow forks)
- No record/replay functionality
The State of Debugging Tools
The emergence of 'nnd' highlights a broader conversation about the state of debugging tools across platforms. Comments reveal a particular pain point for macOS users, with one lamenting the macOS drought continues regarding quality debugging tools. Others mentioned looking forward to RAD Debugger's promised Linux port, suggesting a general hunger for better debugging experiences.
For developers interested in alternatives, the community discussion pointed to several options like pwndbg (which adds quality-of-life improvements to GDB/LLDB) and cgdb (an ncurses-based GDB TUI with vim bindings).
The 6 MB standalone executable with no dependencies makes 'nnd' particularly appealing for those looking to quickly try a new debugging approach without complex setup. While still in active development with essential features implemented, the creator notes they use it daily and find it very helpful, though it hasn't been widely tested across different environments.
As development tools continue to evolve, 'nnd' represents a focused attempt to improve a critical part of the programmer's workflow that has seen relatively little innovation compared to areas like build systems and editors.
Reference: al13n321/nnd