Advertisement
rfmonk

trace.py

Jan 25th, 2014
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.83 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # thx to Foundations of py net prog
  3. # tool for tracing a single function
  4.  
  5. import linecache
  6. import sys
  7. import time
  8.  
  9.  
  10. def make_tracer(funcname):
  11.     def mytrace(frame, event, arg):
  12.         if frame.f_code.co_name == funcname:
  13.             if event == 'line':
  14.                 _events.append((time.time(), frame.f_code.co_filename, frame.f_lineno))
  15.             return mytrace
  16.         return mytrace
  17.  
  18. if __name__ == '__main__':
  19.     _events = []
  20.     if len(sys.argv) < 3:
  21.         print >>sys.stderr, 'usage: trace.py funcname other_script.py ...'
  22.         sys.exit(2)
  23.     sys.settrace(make_tracer(sys.argv[1]))
  24.     del sys.argv[0:2]
  25.     try:
  26.         execfile(sys.argv[0])
  27.     finally:
  28.         for t, filename, lineno in _events:
  29.             s = linecache.getline(filename, lineno)
  30.             sys.stdout.write('%9.6f %s' % (t % 60.0, s))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement