все 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Сообщить о неточности