【发布时间】:2016-01-27 22:50:34
【问题描述】:
我有一个带有编码的 protobuf 数据的 coredump,我想解码这些数据并查看内容。我有在原始协议缓冲区中定义此消息的 .proto 文件。 我的 proto 文件如下所示:
$ cat my.proto
message header {
required uint32 u1 = 1;
required uint32 u2 = 2;
optional uint32 u3 = 3 [default=0];
optional bool b1 = 4 [default=true];
optional string s1 = 5;
optional uint32 u4 = 6;
optional uint32 u5 = 7;
optional string s2 = 9;
optional string s3 = 10;
optional uint32 u6 = 8;
}
和protoc版本:
$ protoc --version
libprotoc 2.3.0
我尝试了以下方法:
-
从核心转储原始数据
(gdb) dump memory b.bin 0x7fd70db7e964 0x7fd70db7e96d -
将其传递给 protoc
//proto file (my.proto) is in the current dir$ protoc --decode --proto_path=$pwd my.proto < b.binMissing value for flag: --decodeTo decode an unknown message, use --decode_raw.$ protoc --decode_raw < /tmp/b.binFailed to parse input.
关于如何解码它的任何想法?文档并没有详细说明如何去做。
编辑: 二进制格式的数据(10字节)
(gdb) x/10xb 0x7fd70db7e964
0x7fd70db7e964: 0x08 0xff 0xff 0x01 0x10 0x08 0x40 0xf7
0x7fd70db7e96c: 0xd4 0x38
【问题讨论】:
标签: serialization protocol-buffers