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

问题:

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

回答:

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

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()

或者打印到stdout(如果要保持重定向输出在一起)是有用的,请使用:

traceback.print_stack(file=sys.stdout)

但是,通过traceback.format_stack()获取它可以让您随意使用。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Print current call stack from a method in Python code

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 49 = 58