У меня есть coredump с закодированными данными protobuf, и я хочу декодировать эти данные и посмотреть содержимое. У меня есть .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
-
Передайте его протоку
//proto file (my.proto) is in the current dir
$ protoc --decode --proto_path=$pwd my.proto < b.bin
Missing value for flag: --decode
To decode an unknown message, use --decode_raw.
$ protoc --decode_raw < /tmp/b.bin
Failed to parse input.
Любые мысли о том, как его декодировать? Документация не объясняет, как это сделать.
Edit: Данные в двоичном формате (10 байт)
(gdb) x/10xb 0x7fd70db7e964
0x7fd70db7e964: 0x08 0xff 0xff 0x01 0x10 0x08 0x40 0xf7
0x7fd70db7e96c: 0xd4 0x38