traceback.print_stack()使用IPython< ultratb

时间:2016-03-18 15:22:12

标签: python debugging ipython stack-trace traceback

出于调试/日志记录的目的,我想将完整堆栈写入文件(例如this question中)。我可以使用traceback.format_stack()执行此操作。但是,我希望它看起来像IPython输出的更详细的回溯,例如,使用IPython.core.ultratb.VerboseTB进行格式化。

IPython.core.ultratb中的类和方法似乎需要有关异常的信息,因为它们是为追溯而设计的。但我也不例外:我只想以冗长的方式显示堆栈。

如何使用IPython.core.ultratb.VerboseTB的输出方法格式化堆栈,例如traceback.extract_stack()inspect.stack()报告?

1 个答案:

答案 0 :(得分:1)

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