7 个版本

0.1.5 2024年6月10日
0.1.4 2024年5月6日
0.1.3 2024年2月23日
0.1.2 2024年1月16日
0.0.0 2023年11月20日

#202 in 调试

Download history 71/week @ 2024-04-30 71/week @ 2024-05-07 1/week @ 2024-05-14 5/week @ 2024-05-21 113/week @ 2024-06-04 61/week @ 2024-06-11 7/week @ 2024-07-02

423 每月下载量

BSD-3-Clause

660KB
14K SLoC

pipeline crates.io rustc

blazecli

blazecliblazesym 库的命令行界面。它旨在在命令和子命令结构上与库的结构保持一致。

用法

如上所述,程序的子命令旨在反映库的公共API结构。因此,要符号化ELF文件中的地址——通过 blazesymsymbolize::Symbolizer 类型以及 Elf 可以通过 symbolize elf 子命令实现

# Just an example to illustrate symbolization on live data.
$ readelf --syms /lib64/libc.so.6 --wide | grep readdir64_r
>   2253: 00000000000caee0   228 FUNC    WEAK   DEFAULT   12 readdir64_r@@GLIBC_2.2.5

$ blazecli symbolize elf --path /lib64/libc.so.6 00000000000caee0
> 0xcaee0: readdir_r@0xcaee0+0 :0

要从检出的程序运行程序(无需任何安装),您可以使用

$ cargo run -p blazecli -- symbolize elf --path /lib64/libc.so.6 00000000000caee0

同样,要符号化进程内的地址,可以使用 symbolize process 子命令。请参阅程序的帮助文本以获取更多详细信息。

预构建的静态链接二进制文件可用于各种目标三联体,可在 此处 获取。

Shell 完成功能

blazecli 附带了各种shell的完成功能。可以通过 shell-complete 实用程序生成完成脚本,然后只需将其源到当前shell中,即可提供上下文感知的Tab补全支持。例如:

$ cargo run -p blazecli --bin=shell-complete --features="clap_complete" -- bash > blazecli.bash
$ source blazecli.bash

生成的完成脚本可以全局安装并通过初始化文件(如~/.bashrc)进行引用。

其他shell的完成脚本以类似的方式工作。请参阅shell-complete程序的帮助文本(--help)以获取支持的shell列表。

依赖关系

约6-8MB
约141K SLoC