PageRenderTime 23ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/tracedebug.py

https://bitbucket.org/tenuki/sleepy
Python | 42 lines | 35 code | 7 blank | 0 comment | 10 complexity | 10118f77f8d67b76bacc7285ae6ad55a MD5 | raw file
  1. import sys, traceback
  2. import test1
  3. _END = False
  4. COL_DEF = '%15s %10s:%4d %3d %s'
  5. SKIP_FILES = set(['traceback.py', 'ntpath.py', 'linecache.py'])
  6. FN = lambda x: x if not '\\' in x else x.rsplit('\\',1)[1]
  7. def tracer(frame, event, arg):
  8. global _END
  9. try:
  10. if _END:
  11. return
  12. _show = {}
  13. fn = FN(frame.f_code.co_filename)
  14. if fn in SKIP_FILES:
  15. return
  16. for k in frame.f_locals.keys():
  17. if k.startswith('SL'):
  18. _show[k] = frame.f_locals[k]
  19. print COL_DEF%(event, fn, frame.f_lineno,
  20. frame.f_lasti, repr(_show))
  21. if event=='return' and (fn=='test1.py'):
  22. print 'return none..'
  23. _END = True
  24. return
  25. return tracer
  26. except:
  27. if traceback:
  28. traceback.print_exc()
  29. try:
  30. print COL_DEF.replace('d','s') % ('event', 'fname','line', 'i', 'sleepylocals')
  31. sys.settrace(tracer)
  32. test1.for_exception()
  33. except:
  34. print traceback
  35. traceback.print_exc()