Guest User

Untitled

a guest
Nov 20th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. import time
  2. import sys
  3. import inspect
  4. import runpy
  5. import os
  6.  
  7. class NullDevice():
  8. def write(self, s):
  9. pass
  10.  
  11. class Tracer(object):
  12. def __init__(self):
  13. self.run_info = {}
  14.  
  15. def tracefunc(self, frame, event, arg):
  16. filename = inspect.getfile(frame)
  17. line = frame.f_lineno
  18.  
  19. if filename not in self.run_info:
  20. self.run_info[filename] = {}
  21. if line not in self.run_info[filename]:
  22. self.run_info[filename][line] = {}
  23.  
  24. for k, v in frame.f_locals.iteritems():
  25. self.run_info[filename][line][k] = v
  26.  
  27. return self.tracefunc
  28.  
  29. def set_trace(self):
  30. sys.settrace(self.tracefunc)
  31.  
  32. def uninstall_trace(self):
  33. sys.settrace(None)
  34.  
  35. filename = sys.argv[1]
  36. start_time = os.stat(filename).st_mtime
  37. orginal_stdout = sys.stdout
  38.  
  39. while(True):
  40. if(os.stat(filename).st_mtime > start_time):
  41. t = Tracer()
  42.  
  43. t.set_trace()
  44. sys.stdout = NullDevice()
  45. execfile(filename, {}, {})
  46. t.uninstall_trace()
  47.  
  48. sys.stdout = orginal_stdout
  49. print t.run_info[filename]
  50. start_time = os.stat(filename).st_mtime
  51. else:
  52. time.sleep(1)
Add Comment
Please, Sign In to add comment