2009-12-04 41 views

回答

1

您可以使用替代pydb调试器。您可以使用pydb --fntrace --batch <scriptname>来调用它以获取功能跟踪。

至于“闪烁”,请在ANSI终端上使用常用工具(如Ctrl-S/Ctrl-Q),或重定向到文件。

+0

我认为这个调试器可以完成pdb不能做的工作!我在showmedo.com/videotutorials/...上找到了一个很好的教程。请参阅中间的“set linetrace delay 0.35”功能。谢谢 – citn 2009-12-04 14:37:42

2

如果你想监控时被叫了几个特定的​​功能, 你可以使用这个装饰:

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)) 
+0

有趣的功能。你可以在什么版本的Python中做到这一点? – citn 2009-12-04 14:35:20

+1

2.4中引入了装饰器,2.5中引入了functools。有一种替代方法可以编写不依赖functools的跟踪装饰器:请参见http://pypi.python.org/pypi/decorator#a-trace-decorator – unutbu 2009-12-04 14:44:17