python打印所有函数调用以了解脚本流

Mar*_*ine 3 python stack-trace

如何打印每个函数/方法调用?我尝试使用:,python -m trace --trace但它还会打印函数内部代码...我只想要被调用的函数名称。在代码中使用traceback会打印调用命令本身之前调用的最后一个函数,并且该代码包含许多类。

Dee*_*ace 5

您可能会发现-l有用。

main.py:

def foo():
    pass

def bar():
    pass

foo()
bar()
Run Code Online (Sandbox Code Playgroud)

在做

$ python -m trace -l main.py
Run Code Online (Sandbox Code Playgroud)

输出

functions called:
filename: C:\Python34\lib\trace.py, modulename: trace, funcname: _unsettrace
filename: main.py, modulename: main, funcname: <module>
filename: main.py, modulename: main, funcname: bar
filename: main.py, modulename: main, funcname: foo
Run Code Online (Sandbox Code Playgroud)

根据您拥有的功能数量,您可能会发现更合适的装饰器:

def print_deco(func):
    def inner(*args, **kwargs):
        print(func.__name__)
        return func(*args, **kwargs)
    return inner

@print_deco
def foo():
    pass

@print_deco
def bar():
    pass

foo()
bar()

# foo
# bar
Run Code Online (Sandbox Code Playgroud)

  • `python -m trace -l main.py`按字母顺序而不是调用顺序打印。添加装饰器不是一个选项......太多的函数和类,我没有写代码。谢谢 (3认同)