2009-12-04 57 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