Подтвердить что ты не робот

Печать трассировки стека python без исключения

Что-то происходит с одной из переменных экземпляра класса. Я хочу, чтобы переменная была активна, и всякий раз, когда она доступна, я хочу распечатать трассировку стека всего кода, ведущего к этой точке, поэтому я могу видеть, с чем она связана. Как распечатать трассировку стека, когда не было сделано никаких исключений? Я знаю, если есть исключение, я могу сделать что-то вроде traceback.format_tb(sys.exc_info()[2]).

Также может быть полезно напечатать только последние 3-4 уровня, так как первые несколько, вероятно, не будут интересными.

4b9b3361

Ответ 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(...)))