traceback.print_stack() 使用 IPython 的 ultratb
traceback.print_stack() using IPython's ultratb
出于 debugging/logging 目的,我想将完整堆栈写入文件(例如 this question). I can do this using traceback.format_stack()
. However, I would like it to look like the more verbose tracebacks that IPython
outputs, for example, formatting with IPython.core.ultratb.VerboseTB
.
类 和 IPython.core.ultratb
中的方法似乎需要有关异常的信息,因为它们是为回溯设计的。但我也不例外:我只是想以冗长的方式显示堆栈。
如何使用IPython.core.ultratb.VerboseTB
的输出方法来格式化traceback.extract_stack()
or inspect.stack()
报告的堆栈?
import IPython.core.ultratb
import sys
try:
1/0
except Exception as exc:
tb = IPython.core.ultratb.VerboseTB()
print(tb.text(*sys.exc_info()))
# --------------------------------------------------------------------------
# ZeroDivisionError Traceback (most recent call last)
# <ipython-input-8-725405cc4e58> in <module>()
# 1 try:
# ----> 2 1/0
# 3 except Exception as exc:
# 4 tb = IPython.core.ultratb.VerboseTB()
# 5 print(tb.text(*sys.exc_info()))
#
# ZeroDivisionError: division by zero
出于 debugging/logging 目的,我想将完整堆栈写入文件(例如 this question). I can do this using traceback.format_stack()
. However, I would like it to look like the more verbose tracebacks that IPython
outputs, for example, formatting with IPython.core.ultratb.VerboseTB
.
类 和 IPython.core.ultratb
中的方法似乎需要有关异常的信息,因为它们是为回溯设计的。但我也不例外:我只是想以冗长的方式显示堆栈。
如何使用IPython.core.ultratb.VerboseTB
的输出方法来格式化traceback.extract_stack()
or inspect.stack()
报告的堆栈?
import IPython.core.ultratb
import sys
try:
1/0
except Exception as exc:
tb = IPython.core.ultratb.VerboseTB()
print(tb.text(*sys.exc_info()))
# --------------------------------------------------------------------------
# ZeroDivisionError Traceback (most recent call last)
# <ipython-input-8-725405cc4e58> in <module>()
# 1 try:
# ----> 2 1/0
# 3 except Exception as exc:
# 4 tb = IPython.core.ultratb.VerboseTB()
# 5 print(tb.text(*sys.exc_info()))
#
# ZeroDivisionError: division by zero