Печать трассировки стека python без исключения
Что-то происходит с одной из переменных экземпляра класса. Я хочу, чтобы переменная была активна, и всякий раз, когда она доступна, я хочу распечатать трассировку стека всего кода, ведущего к этой точке, поэтому я могу видеть, с чем она связана. Как распечатать трассировку стека, когда не было сделано никаких исключений? Я знаю, если есть исключение, я могу сделать что-то вроде traceback.format_tb(sys.exc_info()[2])
.
Также может быть полезно напечатать только последние 3-4 уровня, так как первые несколько, вероятно, не будут интересными.
Ответы
Ответ 1
traceback.print_stack()
:
>>> def f():
... def g():
... traceback.print_stack()
... g()
...
>>> f()
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in f
File "<stdin>", line 3, in g
Изменить: вы также можете использовать extract_stack, взять фрагмент (например, stack[5:]
для исключения первых 5 уровней) и использовать format_list, чтобы получить готовность к печати stacktrace ('\n'.join(traceback.format_list(...))
)