Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import sys
- import inspect
- import runpy
- import os
- class NullDevice():
- def write(self, s):
- pass
- class Tracer(object):
- def __init__(self):
- self.run_info = {}
- def tracefunc(self, frame, event, arg):
- filename = inspect.getfile(frame)
- line = frame.f_lineno
- if filename not in self.run_info:
- self.run_info[filename] = {}
- if line not in self.run_info[filename]:
- self.run_info[filename][line] = {}
- for k, v in frame.f_locals.iteritems():
- self.run_info[filename][line][k] = v
- return self.tracefunc
- def set_trace(self):
- sys.settrace(self.tracefunc)
- def uninstall_trace(self):
- sys.settrace(None)
- filename = sys.argv[1]
- start_time = os.stat(filename).st_mtime
- orginal_stdout = sys.stdout
- while(True):
- if(os.stat(filename).st_mtime > start_time):
- t = Tracer()
- t.set_trace()
- sys.stdout = NullDevice()
- execfile(filename, {}, {})
- t.uninstall_trace()
- sys.stdout = orginal_stdout
- print t.run_info[filename]
- start_time = os.stat(filename).st_mtime
- else:
- time.sleep(1)
Add Comment
Please, Sign In to add comment