【发布时间】:2009-12-04 14:11:58
【问题描述】:
问题是,如何配置 Python 调试器以在控制台中显示正在调用的函数?
为了不让一切都一闪而过,函数调用之间需要延迟。
【问题讨论】:
问题是,如何配置 Python 调试器以在控制台中显示正在调用的函数?
为了不让一切都一闪而过,函数调用之间需要延迟。
【问题讨论】:
如果您想监控何时调用了一些特定的函数, 你可以使用这个装饰器:
import functools
def trace(f):
@functools.wraps(f)
def wrapper(*arg,**kw):
'''This decorator shows how the function was called'''
arg_str=','.join(['%r'%a for a in arg]+['%s=%s'%(key,kw[key]) for key in kw])
print "%s(%s)" % (f.__name__, arg_str)
return f(*arg, **kw)
return wrapper
你会这样使用它:
@trace # <--- decorator your functions with the @trace decorator
def foo(x,y):
# do stuff
当您运行程序时,每次调用 foo(x,y) 时,您都会看到 在控制台中使用其参数值调用函数:
foo(y=(0, 1, 2),x=(0, 0, 0))
【讨论】:
您可以使用替代的pydb 调试器。您可以使用pydb --fntrace --batch <scriptname> 调用它以获取函数跟踪。
至于“flash-by”,在 ANSI 终端上使用常用工具,如 Ctrl-S/Ctrl-Q,或重定向到文件。
【讨论】: