这是一个适用于 Linux 的调试器,部分灵感来自 RemedyBG。
家中已有的调试器:
- 有一张屏幕截图。
该调试器的属性:
- 快速。
- 具有文本用户界面(TUI)。
- 不是基于 gdb 或 lldb 开发,大部分是从零开始实现的。
- 可在大型可执行文件上运行(主要在 2.5GB 的 ClickHouse 上进行了测试)。
“快速”的含义:
- 能够立即完成的操作应立即完成,例如快速的用户界面,无随机冻结,无长时间等待(已知例外:如果程序有>~2k 个线程,速度会变慢,此问题将得到改进)。
- 不能立即完成的操作(加载调试信息、搜索函数和类型)应具有合理的效率、多线程、异步、可取消,并带有进度条。
局限性:
- 仅适用于 Linux。
- 仅适用于 x86 架构。
- 仅适用于 64 位。
- 仅适用于原生代码(例如 C++或 Rust,不适用于 Java 或 Python)。
- 仅支持 TUI(无 REPL,无图形用户界面)。
- 不支持远程调试(但在 ssh 上运行良好)。
- 仅支持单个进程(不跟踪 fork)。
- 不支持记录/回放或向后步进。
开发状态:
- 具备大多数标准调试器功能,例如断点、条件断点(但尚无数据断点)、单步执行、显示代码和反汇编、观察表达式、对大多数 C++和 Rust 标准库的内置美化打印器。还有许多提高生活质量的功能(例如根据虚表自动将抽象类向下转换为具体类)。但肯定有很多缺失的功能,是我从未需要但其他人认为必不可少的,请告知我。
- 我每天都在使用它,发现它非常有帮助。
- 未经过广泛测试 - 仅在几台机器和几个实际可执行文件上进行了测试。
- 许多功能可能不太容易被发现,我应该制作一些教程视频或其他内容。目前,只需随意尝试,查看左上角的提示,并阅读
--help-*
。
以单个 6MB 可执行文件分发,无依赖项。
“安装”:
curl -L -o nnd 'https://github.com/al13n321/nnd/releases/latest/download/nnd'
,然后chmod +x nnd
,尝试./nnd --help
开始使用。或从源代码构建:
先决条件:
- 安装 Rust。
- 安装 musl 目标:
rustup target add x86_64-unknown-linux-musl
。 - 安装 musl-tools:
sudo apt install musl-tools
。
- 构建:
cargo build --profile dbgo --bin nnd
。 - 可执行文件位于
target/x86_64-unknown-linux-musl/dbgo/nnd
。运行nnd --help
获取文档。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。