все Python 3disфункция
dis.distb()
дизассемблирование
Дизассемблирует кадр, где возникло исключение, и стрелкой --> показывает инструкцию, на которой оно случилось.
Синтаксис
dis.distb(tb=None, *, file=None)
Без аргумента берёт sys.last_traceback, а он заполняется только в интерактивной сессии после необработанной ошибки — в скрипте вызов distb() падает с RuntimeError «no last traceback to disassemble». В except передавайте трассировку явно: sys.exc_info()[2] или e.__traceback__. Стрелка помогает понять, какая операция длинной строки упала, — например, какой из нескольких индексов вышел за границу.
Примеры
import dis, io
try:
[1, 2][5]
except IndexError as e:
buf = io.StringIO()
dis.distb(e.__traceback__, file=buf)
print('-->' in buf.getvalue()) # → True
import dis
try:
dis.distb()
except RuntimeError as e:
print(e) # → no last traceback to disassemble
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности