Skip to content Skip to footer
0 items - $0.00 0

Nnd – a TUI debugger alternative to GDB, LLDB by zX41ZdbW

Nnd – a TUI debugger alternative to GDB, LLDB by zX41ZdbW

Nnd – a TUI debugger alternative to GDB, LLDB by zX41ZdbW

21 Comments

  • Post Author
    dec0dedab0de
    Posted May 6, 2025 at 2:16 pm

    I don't work with anything that would need this, but I love TUIs so I checked it out and saw this bit:

    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.

    I wish this were more common, especially the progress bars thing.

  • Post Author
    jmclnx
    Posted May 6, 2025 at 2:18 pm

    Looks very nice, will need to give it a spin :)

  • Post Author
    trollbridge
    Posted May 6, 2025 at 2:25 pm

    Awesome work. Reminds me of CodeView back in the day, which I've been wishing I could have back since, and no, a gigantic pile of Emacs or vim plugins is not the equivalent.

  • Post Author
    jebarker
    Posted May 6, 2025 at 2:30 pm

    This is nice. I want something like this for python that I can use on remote servers and compute nodes of clusters. I've tried pudb but I find it doesn't behave well with terminal resizing and I wish the interface was a little more configurable.

  • Post Author
    alfanick
    Posted May 6, 2025 at 2:31 pm

    Sideline question: how do you end up with 2.5GB binary (ClickHouse as given in the readme)?

  • Post Author
    dvektor
    Posted May 6, 2025 at 2:35 pm

    Very cool! I have been using LLDB quite a bit lately so I am eager to try this out. The state of debuggers dev experience really hasn't caught up to what things like Cargo have done for build systems, so I am glad to see people working on things like this.

  • Post Author
    hippospark
    Posted May 6, 2025 at 2:36 pm

    For those interested in writing a debugger:
    There are a series of tutorials on how to write a debugger from scratch
    for Windows x86-64 using Rust [1].
    Additionally, there is a book titled "Building a Debugger – Write a Native x64 Debugger From Scratch" by Sy Brand [2].

    [^1]: https://www.timdbg.com/posts/writing-a-debugger-from-scratch…
    [^2]: https://nostarch.com/building-a-debugger

  • Post Author
    FpUser
    Posted May 6, 2025 at 2:44 pm

    It looks very useful. I will definitely test it. Thank you for such contribution.

  • Post Author
    Zambyte
    Posted May 6, 2025 at 2:45 pm

    Cool :D anyone get a chance to try this out with Zig yet?

  • Post Author
    colesantiago
    Posted May 6, 2025 at 2:50 pm

    How does one install this?

    I don't want to go through the curl | bash either for security reasons.

    It would be nice to have some package manager support, but it looks cool.

  • Post Author
    Keyframe
    Posted May 6, 2025 at 2:51 pm

    great! I already gave up on RemedyBG or RAD/Epic debugger ever on linux to happen.

  • Post Author
    theoperagoer
    Posted May 6, 2025 at 3:06 pm

    Very cool. How many architectures do you support?

  • Post Author
    philsnow
    Posted May 6, 2025 at 3:12 pm

    GDB already has a TUI.. it's pretty "vintage" though. I looked at the screenshot at the top of the repo README and it looks like it has a lot more creature comforts (read: any at all compared to GDB).

  • Post Author
    danhau
    Posted May 6, 2025 at 3:37 pm

    Cool! Looks like the btop of debuggers. That‘s certainly a tool I would love to have.

  • Post Author
    deagle50
    Posted May 6, 2025 at 3:38 pm

    the macOS drought continues

  • Post Author
    fcoury
    Posted May 6, 2025 at 3:39 pm

    Is there anything similar to this that would support arm64? Unfortunately lldb is still not on par with even gdb.

  • Post Author
    tieze
    Posted May 6, 2025 at 3:52 pm

    People here might also be interested in pwndbg, which adds a lot of qol improvements to the typical gdb/lldb experience. Including splitting dialogs over tmux panes, a lot more context info added to debug lines like where do pointers point to. Heap inspection. Colorization. makes for a much more friendly debugging experience.

  • Post Author
    coldblues
    Posted May 6, 2025 at 3:59 pm

    The RAD Debugger is getting a Linux port so hopefully we won't have to deal with the sad state of Linux debugging anymore.

  • Post Author
    tw600040
    Posted May 6, 2025 at 5:07 pm

    Not related to this post, but why in the world is anyone using TUI. Either go with GUI or go with commandline. This no man's land in the middle is the worst of both worlds..

  • Post Author
    al13n
    Posted May 6, 2025 at 5:29 pm

    Hi, author here :)

    Didn't expect it to be posted, readme maybe doesn't have enough context. It just says "Essential features are there". What are those? Most of what I've ever used in any debugger:

    * Showing code, disassembly, threads, stack traces, local variables.

    * Watches, with a little custom expression language. E.g. you can do pointer arithmetic, type casts, turn a pointer+length into an array, show as hex, etc. Access to local and global variables, thread-local variables, registers. Type introspection (e.g. sizeof and offsets of fields).

    * Pretty printers for most C++ and Rust standard library types. Probably fragile and version-dependent (e.g. fields names often changes across versions), please report when they don't work.

    * Automatically down-casting abstract classes to concrete classes.

    * Breakpoints, conditional breakpoints (but no data breakpoints yet).

    * Stepping: into/over/out a source code line, into/over a disassembly instruction, over a source code column (when there are multple statements one line, e.g. to skip evaluation of arguments of a function call). All places where control can stop (statements) are highlighted in the code, so you usually don't get surprised by where a step takes you. (…except when there's garbage in debug info, and you end up temporarily on line 0 or something. This happens frustratingly often, and there's not much I can do about it. I already added quite a few workarounds to make stepping less janky in such cases. If a step takes you to an unexpected place, it usually under-steps rather than over-steps, so you can just step again until you end up in the correct place.)

    * Various searches: file by name, function by name, function by address (like addr2line), type by name, global variable by name, thread by stack trace.

    * Debugging core dumps. There's also a gdump-like tool built in (`nnd –dump-core`) that makes core dump of a running process without killing it; it uses fork to minimize downtime (usually around a second even if there are tens of GB of memory to dump).

    * Customizable key bindings, see `nnd –help-files` or `nnd –help-state`.

    * TUI with mouse support, tooltips, etc.

  • Post Author
    larusso
    Posted May 6, 2025 at 5:40 pm

    Back in my native android days I used cgdb to have a split screen view of the sources I debug. The vim like interface was exactly what I needed. Just thought about it after seeing this project.

    https://cgdb.github.io/

Leave a comment

In the Shadows of Innovation”

© 2025 HackTech.info. All Rights Reserved.

Sign Up to Our Newsletter

Be the first to know the latest updates

Whoops, you're not connected to Mailchimp. You need to enter a valid Mailchimp API key.