Вызов функции печати с переменной задержкой / Python - PullRequest
1 голос
/ 04 декабря 2009

Вопрос в том, как настроить отладчик Python, чтобы он отображал в консоли, какие функции вызываются?

Чтобы не видеть все, что происходит, требуется задержка между вызовами функций.

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

Если вы хотите отслеживать, когда вызывается несколько конкретных функций, Вы можете использовать этот декоратор:

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))
1 голос
/ 04 декабря 2009

Вы можете использовать альтернативный отладчик pydb . Вы можете вызвать его с помощью pydb --fntrace --batch <scriptname>, чтобы получить трассировку функции.

Что касается «прошивки», используйте обычные инструменты, такие как Ctrl-S / Ctrl-Q на терминале ANSI, или перенаправьте в файл.

...