从Python代码中的方法打印当前的调用堆栈
在Python中,如何从方法内打印当前的调用堆栈(用于debugging目的)。
以下是通过回溯模块获取堆栈并将其打印的示例:
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()
或者打印到标准输出(如果想要保持redirect输出一起使用),使用:
traceback.print_stack(file=sys.stdout)
但通过traceback.format_stack()
获取它可以让你做任何你喜欢的事情。
import traceback traceback.print_stack()
inspect.stack()
返回当前堆栈而不是exception追溯:
import inspect print inspect.stack()
请参阅https://gist.github.com/FredLoney/5454553获取log_stack实用程序函数。;
如果您使用pythondebugging器,不仅可以交互式探测variables,而且可以使用“where”命令或“w”获得调用堆栈。
所以在你的程序的顶部
import pdb
然后在代码中你想看看发生了什么
pdb.set_trace()
你会掉进提示符