GitHub - al13n321/nnd:一个用于 Linux 的调试器

这是一个适用于 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获取文档。
阅读 32
0 条评论