在Python中,如何从方法中打印当前调用堆栈(用于调试目的)。
当前回答
Inspect.stack()返回当前堆栈,而不是异常回溯:
import inspect
print inspect.stack()
有关log_stack实用函数,请参阅https://gist.github.com/FredLoney/5454553。
其他回答
下面是一个通过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()获取它可以让你对它做任何你喜欢的事情。
import traceback
traceback.print_stack()
Inspect.stack()返回当前堆栈,而不是异常回溯:
import inspect
print inspect.stack()
有关log_stack实用函数,请参阅https://gist.github.com/FredLoney/5454553。
如果您使用python调试器,不仅可以交互式探测变量,还可以使用“where”命令或“w”获取调用堆栈。
在程序的顶部
import pdb
然后在代码中查看发生了什么
pdb.set_trace()
然后你就进入了提示符
对于那些在使用pdb时需要打印调用堆栈的人,就这样做吧
(Pdb) where
推荐文章
- 如何在Python中做指数和对数曲线拟合?我发现只有多项式拟合
- 创建独立变量字典的简单方法?
- 在Python中创建一个初始容量的列表
- Pylint在Visual Studio代码中“未解决的导入”错误
- Matplotlib错误-没有名为tkinter的模块
- 0到1之间的随机数?
- 使用Boto3将S3对象作为字符串打开
- "pip install——editable ./" vs "python setup.py develop"
- Pandas:索引数据帧时的多个条件-意外行为
- 如何更改Django应用程序的名称?
- 如何在python抽象类中创建抽象属性?
- “克隆”行或列向量
- 在python shell中按方向键时看到转义字符
- Linux有c++ gdb图形用户界面吗?
- 在pip install中方括号是什么意思?