Python 3.5+tracebackфункция
traceback.walk_tb()
кадры и стек
Генератор пар (кадр, номер строки) по трассировке исключения через tb_next — от места перехвата к месту ошибки.
Синтаксис
for frame, lineno in traceback.walk_tb(tb): ...
Отдаёт живые кадры, поэтому через frame.f_locals видны значения переменных в момент ошибки — так устроены отчёты «со значениями переменных». Направление обратное walk_stack: от внешнего кадра к внутреннему, последний — место ошибки. Пока вы держите эти кадры (или само исключение), их переменные не освобождаются.
Примеры
import traceback
def div(a, b):
return a / b
try:
div(1, 0)
except ZeroDivisionError as e:
*_, (frame, line) = traceback.walk_tb(e.__traceback__)
print(frame.f_code.co_name, dict(frame.f_locals)) # → div {'a': 1, 'b': 0}
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности