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