From da91bb6d1ec2edda204eb50bb1ec6a0e00a4d557 Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Fri, 6 Mar 2009 22:57:57 +0100 Subject: tools/trace: Ended the interpretor part of the trace tool. --- tools/trace/tinter/tinter.py | 62 +++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 32 deletions(-) (limited to 'tools/trace/tinter/tinter.py') diff --git a/tools/trace/tinter/tinter.py b/tools/trace/tinter/tinter.py index ecf99696..28197fd2 100644 --- a/tools/trace/tinter/tinter.py +++ b/tools/trace/tinter/tinter.py @@ -1,16 +1,20 @@ import sys from thost import * +from utils import * try: from lib.parser import * except: print "--> You should run yapps on lib/parser.g" + class TInter: - def __init__(self, infile): + def __init__(self, infile, outfile): self.__infile = infile self.__events = None + self.__outfile = outfile + self.__file = None def __events_get (self): infile = open (self.__infile, 'r') @@ -20,43 +24,37 @@ class TInter: def __event_print (self, events, memory): if len(memory) > 0: - cmd = int (memory[0:2], 16) - if cmd < len(events) - 1: + cmd = get_size (memory, 2) + if cmd < len(events): e = events[cmd] string = e.string_get() - memory = memory[2:len(memory)] for i in range (0, e.param_nb()): p = e.param_get(i) - size = p.length() * 2 - val = memory[0:size] - memory = memory[size:len(memory)] - string = string.replace('%d', str(int(val, 16)), 1) - return [memory, string] + size = p.length() + val = get_size (memory, size) + string = string.replace('%d', str(val), 1) + + if self.__file == None: + print string[1:len(string)-1] + else: + self.__file.write (string[1:len(string)-1] + "\n") + + return memory else: return None - def __get_last_trace (self, data): - while len (data): - memory = data.split('f33ff22f') - memory = memory[len(memory) - 1] - return memory - - def trace_print (self, file=None): + def trace_print (self): events = self.__events_get () + host = THost() + host.dump_memory() + memory = host.get_trace () - if file == None: - memory = thost_dump_memory() - else: - file = open (file, 'r') - memory = file.read() - file.close() - memory = self.__get_last_trace (memory) - - while len(memory) > 0: - data = self.__event_print(events, memory) - if data != None: - string = data[1] - memory = data[0] - print string[1:len(string)-1] - else: - memory = "" + if self.__outfile != None: + self.__file = open (self.__outfile, 'w') + self.__file.write ('APBTeam v1.0 Log interpretor\n') + + while memory != None: + memory = self.__event_print(events, memory) + + if self.__file != None: + self.__file.close () -- cgit v1.2.3