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
This commit is contained in:
@ -5,30 +5,43 @@
|
|||||||
|
|
||||||
import trace_pb2
|
import trace_pb2
|
||||||
import sys
|
import sys
|
||||||
|
import struct
|
||||||
|
|
||||||
if len(sys.argv) != 2:
|
if len(sys.argv) != 2:
|
||||||
print "Usage:", sys.argv[0], "tracefile.pb"
|
print "Usage:", sys.argv[0], "tracefile.pb"
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
trace = trace_pb2.Trace()
|
trace_event = trace_pb2.Trace_Event()
|
||||||
|
|
||||||
|
|
||||||
# Read trace
|
|
||||||
try:
|
try:
|
||||||
f = open(sys.argv[1], "rb")
|
f = open(sys.argv[1], "rb")
|
||||||
trace.ParseFromString(f.read())
|
|
||||||
f.close()
|
|
||||||
except IOError:
|
except IOError:
|
||||||
print sys.argv[1] + ": Could not open file."
|
print sys.argv[1] + ": Could not open file."
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
# This works for any type of pb message:
|
while 1:
|
||||||
#print trace
|
# 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:
|
# Read Trace-Event
|
||||||
for event in trace.event:
|
length = struct.unpack('!I', lengthNO)[0]
|
||||||
if not event.HasField("memaddr"):
|
trace_event.ParseFromString(f.read(length))
|
||||||
print "IP {0:x}".format(event.ip)
|
|
||||||
else:
|
# This works for any type of pb message:
|
||||||
print "MEM {0} {1:x} width {2:d} IP {3:x}".format(
|
#print trace_event
|
||||||
"R" if event.accesstype == trace_pb2.Trace.Event.READ else "W",
|
|
||||||
event.memaddr, event.width, event.ip)
|
# 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()
|
||||||
|
|||||||
Reference in New Issue
Block a user