/trunk/tracedebug.py
https://bitbucket.org/tenuki/sleepy · Python · 42 lines · 35 code · 7 blank · 0 comment · 11 complexity · 10118f77f8d67b76bacc7285ae6ad55a MD5 · raw file
- import sys, traceback
- import test1
-
- _END = False
-
- COL_DEF = '%15s %10s:%4d %3d %s'
- SKIP_FILES = set(['traceback.py', 'ntpath.py', 'linecache.py'])
-
- FN = lambda x: x if not '\\' in x else x.rsplit('\\',1)[1]
-
- def tracer(frame, event, arg):
- global _END
- try:
- if _END:
- return
- _show = {}
- fn = FN(frame.f_code.co_filename)
- if fn in SKIP_FILES:
- return
-
- for k in frame.f_locals.keys():
- if k.startswith('SL'):
- _show[k] = frame.f_locals[k]
- print COL_DEF%(event, fn, frame.f_lineno,
- frame.f_lasti, repr(_show))
-
- if event=='return' and (fn=='test1.py'):
- print 'return none..'
- _END = True
- return
- return tracer
- except:
- if traceback:
- traceback.print_exc()
- try:
- print COL_DEF.replace('d','s') % ('event', 'fname','line', 'i', 'sleepylocals')
- sys.settrace(tracer)
-
- test1.for_exception()
- except:
- print traceback
- traceback.print_exc()