Python Glossary English

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