5个版本
0.2.0 | 2022年2月16日 |
---|---|
0.1.3 | 2022年2月11日 |
0.1.2 | 2022年1月31日 |
0.1.1 | 2022年1月31日 |
0.1.0 | 2022年1月31日 |
#2340 in 编码
25KB
553 行
decode_raw
A protobuf调试工具 – 加强版的protoc --decode_raw
亮点
美观的输出
支持小数据和大数据
默认截断大二进制数据。长度始终可见。您可以使用 --full
来显示完整数据。结合消息选择(见下文),您可以首先获得概览,然后获取特定字段的完整数据。
漂亮的转义JSON内容
字符串内容可以直接粘贴到类似 echo '{"my": "json"}' | jq
的工具中。
选择子消息
使用类似jq的语法仅选择子消息。
高级类型检测
工具基于最佳猜测在嵌套protobuf消息、字符串和原始字节之间进行判断。有时它可能错误,但您可以提供帮助。例如,如果您知道没有使用固定长度类型,请添加 --no-fixed
以获得正确的输出。
安装
从crates.io安装
cargo install decode_raw
根据您的系统上的cargo配置,您应该在 $HOME/.cargo/bin
或 $CARGO_HOME/bin
中找到二进制文件。将此文件夹添加到您的 $PATH
中很方便。
更新到最新版本
您可以使用 decode_raw --version
检查已安装的版本,并更新。
cargo install --force decode_raw
基本用法
decode_raw 从 STDIN 读取序列化的 protobuf 并打印。
从管道
$ echo 08bf99bfb4e502120a4a616e6520536d697468 | xxd -r -p | decode_raw
1: 95941545151
2: (10 bytes) 'Jane Smith'
从文件
decode_raw < docs/person.bin
1: 1021211
2: (8 bytes) 'John Doe'
3 {
· 1: 959435311
· 2: (11 bytes) 'Susanne Doe'
}
3 {
· 1: 81154811
· 2: (9 bytes) 'Mac Smith'
· 3 {
· · 1: 95941545151
· · 2: (10 bytes) 'Jane Smith'
· }
}
目标与非目标
decode_raw 应该
- 使 Simon 在调试 protobuf 时感到满意
- 对于
protoc --decode_raw
的用户来说,启动非常简单 - 支持 proto3
它无意
- 为脚本提供稳定的输出
- 成为性能赢家
- 帮助修复 protobuf 序列化。这些将被视为原始的应用层字节。
- 支持 proto2
许可证
依赖关系
~6.5MB
~114K SLoC