在
Python中是否有类似的机制,-b对bash有效果?
以下是此模式下bash的一些示例输出:
+ for src in cpfs.c log.c popcnt.c ssse3_popcount.c blkcache.c context.c types.c device.c ++ my_mktemp blkcache.c.o +++ mktemp -t blkcache.c.o.2160.XXX ++ p=/tmp/blkcache.c.o.2160.IKA ++ test 0 -eq 0 ++ echo /tmp/blkcache.c.o.2160.IKA + obj=/tmp/blkcache.c.o.2160.IKA
解决方法
也许使用
sys.settrace:
使用traceit()打开跟踪,使用traceit(False)关闭跟踪.
import sys import linecache def _traceit(frame,event,arg): ''' http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html ''' if event == "line": lineno = frame.f_lineno filename = frame.f_globals["__file__"] if (filename.endswith(".pyc") or filename.endswith(".pyo")): filename = filename[:-1] name = frame.f_globals["__name__"] line = linecache.getline(filename,lineno) print "%s # %s:%s" % (line.rstrip(),name,lineno,) return _traceit def _passit(frame,arg): return _passit def traceit(on=True): if on: sys.settrace(_traceit) else: sys.settrace(_passit) def mktemp(src): pass def my_mktemp(src): mktemp(src) p=src traceit() for src in ('cpfs.c','log.c',): my_mktemp(src) traceit(False)
产量
mktemp(src) # __main__:33 pass # __main__:30 p=src # __main__:34 mktemp(src) # __main__:33 pass # __main__:30 p=src # __main__:34 if on: sys.settrace(_traceit) # __main__:26 else: sys.settrace(_passit) # __main__:27