从代码中的方法打印当前调用栈
在Python中,我该如何在一个方法里打印当前的调用栈(用于调试)呢?
8 个回答
105
对于那些在使用pdb时需要打印调用栈的人,只需这样做:
(Pdb) where
154
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序根据不同的条件做出不同的反应。这就像在生活中,我们会根据天气决定穿什么衣服。如果天气冷,我们可能会穿上外套;如果天气热,我们就会穿短袖。
同样的道理,在代码里,我们可以使用“条件语句”来实现这个功能。条件语句就像是一个判断的工具,它会检查某个条件是否成立,然后根据这个条件来决定接下来要执行什么操作。
比如说,如果我们想要检查一个数字是否大于10,我们可以写一个条件语句来做这个判断。如果这个数字确实大于10,程序就会执行某个特定的操作;如果没有大于10,程序就会执行另一个操作。
这样一来,我们的程序就能根据不同的情况做出不同的反应,变得更加灵活和智能。
希望这个解释能帮助你理解条件语句的基本概念!
import traceback
traceback.print_stack()
498
这里有一个例子,教你怎么通过 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()
获取调用栈后,你可以随意处理它。