Python Glossary English

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

pdb.post_mortem()

посмертная отладка

Открывает отладчик в кадре, где возникло исключение: можно посмотреть переменные уже упавшего кода.

Синтаксис

pdb.post_mortem(t=None)

Без аргумента берёт исключение, которое обрабатывается сейчас, и потому работает только внутри except; вне его поднимает ValueError. С 3.13 можно передать сам объект исключения, на 3.11–3.12 — только e.__traceback__. Цепочки исключений (raise ... from) в 3.13+ можно обходить командой exceptions.

Примеры

import io, sys, pdb
def f():
    data = {'a': 1}
    return data['b']
sys.stdin = io.StringIO('p data\nq\n')
sys.stdout = log = io.StringIO()
try:
    f()
except KeyError as e:
    pdb.post_mortem(e.__traceback__)
sys.stdout = sys.__stdout__
print(log.getvalue().split('(Pdb) ')[1].strip())  # → {'a': 1}
import pdb
try:
    pdb.post_mortem()
except ValueError as e:
    print(type(e).__name__)  # → ValueError — вне except разбирать нечего

См. также

Частые ошибки

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