1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2019年4月4日 |
---|
#54 在 #dwarf
85KB
2K SLoC
thorin — DWARF 调试器
thorin
是一个类似于 gdb
的简单调试器,它是 Linux 和 MacOS 的 (非常) 小兄弟。目前它仅适用于 C 程序和 x86_64 架构。
thorin
仍在开发中 -- 请参阅 TODO 部分。
安装
获取 Rust 和
cargo install thorin
使用
thorin <target-program>
thorin
将启动目标程序并等待异常,如段错误。
如果程序成功退出,则不会发生任何操作。
如果程序引发异常,thorin 将暂停它并捕获其状态。您可以通过 thorin 控制台检查程序的状态
thorin> help
Commands:
(print|show|get) <variable-name>: Print the value of a variable.
read <address> <count> <type>: Read the value at <address>. <type>
is the type of the value, <count> is the
number of values to read.
help: Print this help message.
(exit|quit): Quit thorin.
为了访问变量和其他源代码级别的信息,thorin 需要能够读取程序对象文件中的调试信息。为此,您只需使用 -g
标志编译您的 C 程序即可。
cc -g [other flags] myprogram.c
目前,您可能需要在 MacOS 上以 root 权限调用 thorin
。我最终会找出如何让 Rust 二进制文件的代码签名生效。
为什么会有这个存在?
没有真正的理由要在 thorin
和 gdb、lldb 或其他更强大的调试器之间选择 thorin
。我写这个是因为
- 我想学习 Rust。
- 这是一次有趣的系统编程练习。
我选择“thorin”这个名字是因为这个程序读取 DWARF 文件(调试信息的常用格式)。
TODO
- 修复 CLI
- 传递参数并更改目标进程的 stdin/stdout
- 通用错误修复和 QOL 改进
- MacOS 代码签名
作者
- Ajay Tatachar ([email protected])
依赖关系
~6MB
~113K SLoC