From 18fdd87c8cc330fdde4d459050ceaf6a8b7b0048 Mon Sep 17 00:00:00 2001 From: hellwig Date: Tue, 5 Jun 2012 11:34:33 +0000 Subject: [PATCH] dump-trace.py adapted to ProtoStream git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1297 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- core/plugins/tracing/dump-trace.py | 43 +++++++++++++++++++----------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/core/plugins/tracing/dump-trace.py b/core/plugins/tracing/dump-trace.py index ccdc0c2e..a90465b3 100755 --- a/core/plugins/tracing/dump-trace.py +++ b/core/plugins/tracing/dump-trace.py @@ -5,30 +5,43 @@ import trace_pb2 import sys +import struct if len(sys.argv) != 2: print "Usage:", sys.argv[0], "tracefile.pb" sys.exit(-1) -trace = trace_pb2.Trace() +trace_event = trace_pb2.Trace_Event() + -# Read trace try: - f = open(sys.argv[1], "rb") - trace.ParseFromString(f.read()) - f.close() + f = open(sys.argv[1], "rb") except IOError: print sys.argv[1] + ": Could not open file." sys.exit(-1) -# This works for any type of pb message: -#print trace +while 1: + # Read trace length + try: + lengthNO = f.read(4) + if len(lengthNO) == 0: + break + except IOError: + print "Could not read data from file" -# More compact dump for traces: -for event in trace.event: - if not event.HasField("memaddr"): - print "IP {0:x}".format(event.ip) - else: - print "MEM {0} {1:x} width {2:d} IP {3:x}".format( - "R" if event.accesstype == trace_pb2.Trace.Event.READ else "W", - event.memaddr, event.width, event.ip) + # Read Trace-Event + length = struct.unpack('!I', lengthNO)[0] + trace_event.ParseFromString(f.read(length)) + + # This works for any type of pb message: + #print trace_event + + # More compact dump for traces: + if not trace_event.HasField("memaddr"): + print "IP {0:x}".format(trace_event.ip) + else: + print "MEM {0} {1:x} width {2:d} IP {3:x}".format( + "R" if trace_event.accesstype == trace_pb2.Trace_Event.READ else "W", + trace_event.memaddr, trace_event.width, trace_event.ip) + +f.close()