Python Glossary English

все Python 3inspectфункция

inspect.trace()

стек и кадры

Список FrameInfo от текущего кадра до места, где было возбуждено обрабатываемое исключение. Работает только внутри except.

Синтаксис

inspect.trace(context=1) -> list[FrameInfo]

Вне блока except trace() не падает, а молча возвращает пустой список — частая причина «пустого» отладочного вывода. Порядок обратный stack(): первым идёт кадр с обработчиком, последним — кадр, где случилась ошибка, так что место падения — trace()[-1]. Как и stack(), результат держит живые кадры с локальными переменными, поэтому его не сохраняют надолго; для лога хватает traceback.format_exc().

Примеры

import inspect
def boom():
    1 / 0
def mid():
    boom()
try:
    mid()
except ZeroDivisionError:
    print([fi.function for fi in inspect.trace(0)])  # → ['<module>', 'mid', 'boom']
    print(inspect.trace(0)[-1].lineno)  # → 3
print(inspect.trace())  # → [] — вне except

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности