从Python代码中的方法打印当前调用堆栈

在Python中,如何从方法内打印当前调用堆栈(用于调试目的)。


以下是通过追溯模块获取堆栈并打印它的示例:

import traceback

def f():
    g()

def g():
    for line in traceback.format_stack():
        print(line.strip())

f()

# Prints:
# File "so-stack.py", line 10, in <module>
#     f()
# File "so-stack.py", line 4, in f
#     g()
# File "so-stack.py", line 7, in g
#     for line in traceback.format_stack():

如果你真的只想打印堆栈到stderr,你可以使用:

traceback.print_stack()

或者打印到标准输出(如果想要保持重定向输出一起使用),请使用:

traceback.print_stack(file=sys.stdout)

但通过traceback.format_stack()获取它可以让你traceback.format_stack()做任何事情。


import traceback
traceback.print_stack()

inspect.stack()返回当前堆栈而不是异常追溯:

import inspect
print inspect.stack()

有关log_stack实用程序功能,请参阅https://gist.github.com/FredLoney/5454553。

链接地址: http://www.djcxy.com/p/82427.html

上一篇: Print current call stack from a method in Python code

下一篇: Equivalent to late static binding(PHP) in other popular languages