Nnd – a TUI debugger alternative to GDB, LLDB
文章介绍了一个名为 `nnd` 的 Linux 平台调试器,作为 `GDB` 和 `LLDB` 的替代方案。`nnd` 具有 TUI 界面,主要用 Rust 编写,强调速度快、UI 流畅。它适用于 x86 64 位原生代码调试,例如 C++ 和 Rust。`nnd` 具有一些限制,例如仅限 Linux、不支持远程调试和多进程。文章还提供了安装和构建方法,并说明了其开发状态和未来改进方向。
Nnd:GDB、LLDB 的替代方案,一个 TUI 调试器
一个 Linux 平台的调试器
License
Apache-2.0 license 197 stars 1 fork Branches Tags Activity
al13n321/nnd
main BranchesTags Go to file Code
目录和文件
Name | Name | Last commit message | Last commit date ---|---|---|--- .cargo | .cargo other_things | other_things src | src testprogs | testprogs .gitignore | .gitignore Cargo.lock | Cargo.lock Cargo.toml | Cargo.toml LICENSE | LICENSE README.md | README.md release.sh | release.sh todo | todo 查看所有文件
最新提交
历史记录
仓库文件导航
一个 Linux 平台的调试器。部分灵感来源于 RemedyBG。
妈,我们能在 Linux 上用 RAD Debugger 吗? 不,我们家里有个调试器。 家里的调试器:
特性:
- 速度快。
- TUI。
- 不是基于 gdb 或 lldb, 主要是从头开始实现的。
- 适用于大型可执行文件。(主要在 2.5 GB 的 ClickHouse 上测试过。)
我们所说的“快”是指:
- 能够瞬间完成的操作就应该是瞬间的。 例如,流畅的 UI,没有随机的卡顿,没有长时间的等待。(已知例外:如果程序有超过 ~2k 个线程,速度会变得非常慢。 这将会被改进。)
- 不能瞬间完成的操作(加载调试信息,搜索函数和类型)应该是合理高效的,多线程的,异步的,可取消的,并且带有进度条。
限制:
- 仅限 Linux
- 仅限 x86
- 仅限 64 位
- 仅适用于原生代码(例如 C++ 或 Rust,而不是 Java 或 Python)
- 仅 TUI(没有 REPL,没有 GUI)
- 没有远程调试(但在 ssh 上可以正常工作)
- 单进程(不跟随 fork)
- 没有 record/replay 或向后单步执行
开发状态:
- 基础功能已经完成。但是不同的人认为不同的功能是必不可少的,可能很多功能尚未实现。请告诉我。
- 我每天都在使用它,并且觉得它很有用。
- 没有经过广泛的测试 - 我仅在几台机器和几个真实的可执行文件上尝试过。
以单个 6 MB 可执行文件形式分发,没有依赖项。 “安装”:
curl -L -o nnd 'https://github.com/al13n321/nnd/releases/latest/download/nnd'
chmod +x nnd
# 尝试运行 `./nnd --help` 开始使用
或者从源代码构建:
# 前提条件:
# 1. 安装 Rust。
# 2. 安装 musl target:
rustup target add x86_64-unknown-linux-musl
# 3. 安装 musl-tools
sudo apt install musl-tools
# 构建:
cargo build --profile dbgo --bin nnd
# 可执行文件位于 target/x86_64-unknown-linux-musl/dbgo/nnd
运行 nnd --help
获取文档。
关于
一个 Linux 平台的调试器
资源
License
Stars
Watchers
Forks
Releases 12
v0.12 Latest Apr 30, 2025 + 11 releases
Packages 0
No packages published
语言
- Rust 97.5%
- C 1.2%
- C++ 1.2%
- Other 0.1%