Skip to content

al13n321/nnd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A debugger for Linux. Partially inspired by RemedyBG.

Mom, can we have RAD Debugger on Linux? No, we have debugger at home. Debugger at home:

screenshot

Properties:

  • Fast.
  • TUI.
  • Not based on gdb or lldb, implemented mostly from scratch.
  • Works on large executables.

What we mean by "fast":

  • Operations that can be instantaneous should be instantaneous. I.e. snappy UI, no random freezes, no long waits. (Known exception: if the program has >~2k threads things become pretty slow. This will be improved.)
  • Operations that can't be instantaneous (loading debug info, searching for functions and types) should be reasonably efficient, multi-threaded, asynchronous, cancellable, and have progress bars.

Limitations:

  • Linux only
  • x86 only
  • 64-bit only
  • for native code only (e.g. C++, Rust, Zig, Odin, not Java or Python)
  • TUI only (no REPL, GUI, or IDE integration)
  • no remote debugging (but works fine over ssh)
  • single process (doesn't follow forks)
  • no record/replay or backwards stepping

Development status:

  • Most standard debugger features are there. E.g. breakpoints, conditional breakpoints (but no data breakpoints yet), stepping, showing code and disassembly, watch expressions, built-in pretty-printers for most of C++ and Rust standard library. Many quality-of-life features are there (e.g. auto-downcasting abstract classes to concrete classes based on vtable). But I'm sure there are lots of missing features that I never needed but other people consider essential; let me know.
  • I use it every day and find it very helpful.
  • Not in active development right now. I fix reported bugs and add small requested features, but likely won't get around to implementing big features soon (e.g. redesigning the watch expression language to have loops etc, ARM support, Mac OS support, GUI, DAP).

Distributed as a single 6 MB executable file with no dependencies.

"Installation":

curl -L -o nnd 'https://github.com/al13n321/nnd/releases/latest/download/nnd'
chmod +x nnd
# try `./nnd --help` to get started

Or build from source:

# Prerequisites:
#  1. Install Rust.
#  2. Install musl target:
rustup target add x86_64-unknown-linux-musl
#  3. Install musl-tools
sudo apt install musl-tools

# Build:
cargo build --profile dbgo --bin nnd

# The executable is at target/x86_64-unknown-linux-musl/dbgo/nnd

Run nnd --help for documentation.

About

A debugger for Linux

Resources

License

Stars

Watchers

Forks

Packages

No packages published