TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Nnd – a TUI debugger alternative to GDB, LLDB

277 pointsby zX41ZdbW9 days ago

23 comments

hippospark9 days ago
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 &quot;Building a Debugger - Write a Native x64 Debugger From Scratch&quot; by Sy Brand [2].<p>[^1]: <a href="https:&#x2F;&#x2F;www.timdbg.com&#x2F;posts&#x2F;writing-a-debugger-from-scratch-part-1&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.timdbg.com&#x2F;posts&#x2F;writing-a-debugger-from-scratch...</a> [^2]: <a href="https:&#x2F;&#x2F;nostarch.com&#x2F;building-a-debugger" rel="nofollow">https:&#x2F;&#x2F;nostarch.com&#x2F;building-a-debugger</a>
评论 #43907444 未加载
评论 #43906260 未加载
评论 #43906476 未加载
al13n9 days ago
Hi, author here :)<p>Didn&#x27;t expect it to be posted, readme maybe doesn&#x27;t have enough context. It just says &quot;Essential features are there&quot;. What are those? Most of what I&#x27;ve ever used in any debugger:<p>* Showing code, disassembly, threads, stack traces, local variables.<p>* 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).<p>* 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&#x27;t work.<p>* Automatically down-casting abstract classes to concrete classes.<p>* Breakpoints, conditional breakpoints (but no data breakpoints yet).<p>* Stepping: into&#x2F;over&#x2F;out a source code line, into&#x2F;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&#x27;t get surprised by where a step takes you. (...except when there&#x27;s garbage in debug info, and you end up temporarily on line 0 or something. This happens frustratingly often, and there&#x27;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.)<p>* Various searches: file by name, function by name, function by address (like addr2line), type by name, global variable by name, thread by stack trace.<p>* Debugging core dumps. There&#x27;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).<p>* Customizable key bindings, see `nnd --help-files` or `nnd --help-state`.<p>* TUI with mouse support, tooltips, etc.
评论 #43909527 未加载
评论 #43908902 未加载
评论 #43911336 未加载
评论 #43914505 未加载
评论 #43911849 未加载
dec0dedab0de9 days ago
I don&#x27;t work with anything that would need this, but I love TUIs so I checked it out and saw this bit:<p><i>Operations that can&#x27;t be instantaneous (loading debug info, searching for functions and types) should be reasonably efficient, multi-threaded, asynchronous, cancellable, and have progress bars.</i><p>I wish this were more common, especially the progress bars thing.
评论 #43906139 未加载
评论 #43911124 未加载
philsnow9 days ago
GDB already has a TUI.. it&#x27;s pretty &quot;vintage&quot; 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).
评论 #43907669 未加载
评论 #43906157 未加载
评论 #43910428 未加载
alfanick9 days ago
Sideline question: how do you end up with 2.5GB binary (ClickHouse as given in the readme)?
评论 #43907527 未加载
评论 #43906781 未加载
评论 #43906049 未加载
评论 #43906993 未加载
评论 #43910420 未加载
coldblues9 days ago
The RAD Debugger is getting a Linux port so hopefully we won&#x27;t have to deal with the sad state of Linux debugging anymore.
评论 #43908772 未加载
tieze9 days ago
People here might also be interested in pwndbg, which adds a lot of qol improvements to the typical gdb&#x2F;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.
trollbridge9 days ago
Awesome work. Reminds me of CodeView back in the day, which I&#x27;ve been wishing I could have back since, and no, a gigantic pile of Emacs or vim plugins is not the equivalent.
jebarker9 days ago
This is nice. I want something like this for python that I can use on remote servers and compute nodes of clusters. I&#x27;ve tried pudb but I find it doesn&#x27;t behave well with terminal resizing and I wish the interface was a little more configurable.
评论 #43906380 未加载
tw6000409 days ago
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&#x27;s land in the middle is the worst of both worlds..
评论 #43908773 未加载
评论 #43912148 未加载
评论 #43908060 未加载
评论 #43907697 未加载
评论 #43907387 未加载
评论 #43907492 未加载
评论 #43910193 未加载
评论 #43907399 未加载
udev9 days ago
Love TUI debuggers since I first used the Borland IDE.<p>It is incredible how small and well done that IDE was: hyperlinked (!) documentation, with examples (!!), and awesome debugger.<p>All with TUI.
larusso9 days ago
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.<p><a href="https:&#x2F;&#x2F;cgdb.github.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;cgdb.github.io&#x2F;</a>
dvektor9 days ago
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&#x27;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.
评论 #43905967 未加载
Zambyte9 days ago
Cool :D anyone get a chance to try this out with Zig yet?
评论 #43910768 未加载
fcoury9 days ago
Is there anything similar to this that would support arm64? Unfortunately lldb is still not on par with even gdb.
danhau9 days ago
Cool! Looks like the btop of debuggers. That‘s certainly a tool I would love to have.
FpUser9 days ago
It looks very useful. I will definitely test it. Thank you for such contribution.
Keyframe9 days ago
great! I already gave up on RemedyBG or RAD&#x2F;Epic debugger ever on linux to happen.
评论 #43911120 未加载
deagle509 days ago
the macOS drought continues
评论 #43906389 未加载
theoperagoer9 days ago
Very cool. How many architectures do you support?
评论 #43906197 未加载
jmclnx9 days ago
Looks very nice, will need to give it a spin :)
gitroom8 days ago
been messing around with tui apps for a while - always get drawn back to how much faster terminal stuff feels. this kinda project honestly feels like it gets what i want better than some huge gui setup
colesantiago9 days ago
How does one install this?<p>I don&#x27;t want to go through the curl | bash either for security reasons.<p>It would be nice to have some package manager support, but it looks cool.
评论 #43906509 未加载
评论 #43910560 未加载
评论 #43906689 未加载