message Trace_Event_Extended { // data value read/written optional uint64 data = 5; // register contents repeated group Registers = 6 { // register ID required uint32 id = 1; // register value optional uint64 value = 2; // data register points to optional uint32 value_deref = 3; } // selected stack content repeated group Stack = 7 { required uint32 value = 1; } } message Trace_Event { required uint64 ip = 1; optional uint64 memaddr = 2; optional uint32 width = 3; enum AccessType { READ = 1; WRITE = 2; } optional AccessType accesstype = 4; optional Trace_Event_Extended trace_ext = 5; }