38f7d8c0290d8888db426e6848720bf08b62f8a4
Stefan Schuermans trace dump utility

Stefan Schuermans authored 4 years ago

1) #! /usr/bin/env python3
2) 
3) import argparse
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

4) import uproctrace_pb2
Stefan Schuermans trace dump utility

Stefan Schuermans authored 4 years ago

5) import struct
6) 
7) 
8) def parse_args():
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

9)     parser = argparse.ArgumentParser(description='dump uproctrace trace')
Stefan Schuermans trace dump utility

Stefan Schuermans authored 4 years ago

10)     parser.add_argument('trace', help='trace file')
11)     args = parser.parse_args()
12)     return args
13) 
14) 
15) def dump_event(f):
16)     # skip till after magic
17)     magic = f.read(4)
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

18)     while magic != b'upt0':
Stefan Schuermans trace dump utility

Stefan Schuermans authored 4 years ago

19)         if len(magic) < 4:
20)             return False  # EOF
21)         magic = magic[1:] + f.read(1)  # search for magic byte for byte
22)     # read size of next event (32 bit network byte order)
23)     size = f.read(4)
24)     if len(size) < 4:
25)         return False  # EOF
26)     size = struct.unpack('!L', size)[0]
27)     # read event data
28)     data = f.read(size)
29)     if len(data) < size:
30)         return False  # EOF
31)     # unpack event
Stefan Schuermans rename: lwproctrace -> upro...

Stefan Schuermans authored 4 years ago

32)     event = uproctrace_pb2.event.FromString(data)