Как отдебажить протофайл

«Как отдебажить протофайл» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для отладки protobuf-файлов можно использовать несколько подходов:

  1. Text Format - конвертировать бинарный protobuf в читаемый текст:
import "google.golang.org/protobuf/encoding/prototext"

text := prototext.Format(msg)
fmt.Println(text)
  1. JSON - преобразовать в JSON для удобного просмотра:
import "google.golang.org/protobuf/encoding/protojson"

jsonBytes, _ := protojson.Marshal(msg)
fmt.Println(string(jsonBytes))
  1. DebugString() - метод из пакета proto (для v1 API):
import "github.com/golang/protobuf/proto"

fmt.Println(proto.MarshalTextString(msg))
  1. Wireshark/Protoc - для анализа сетевого трафика можно использовать:
protoc --decode_raw < binary.proto

Для сложных случаев полезно проверять валидность сообщений через proto.Unmarshal() и анализировать ошибки.