Python Glossary English

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

pdb.set_trace()

точки останова

Останавливает программу в отладчике в месте вызова. С Python 3.7 вместо неё обычно пишут breakpoint().

Синтаксис

pdb.set_trace(*, header=None)

С 3.13 остановка происходит на самой строке set_trace(), раньше — на следующей. Забытый вызов в решении опасен: в автопроверке отладчик начнёт читать команды из stdin и съест входные данные теста. breakpoint() лучше тем, что его отключает PYTHONBREAKPOINT=0 без правки кода — но запуск с -E или -I эту переменную игнорирует.

Примеры

import io, sys, pdb
def f(x):
    pdb.set_trace()
    y = x * 2
    return y
sys.stdin = io.StringIO('p x\nc\n')
sys.stdout = log = io.StringIO()
r = f(21)
sys.stdout = sys.__stdout__
print(r, log.getvalue().split('(Pdb) ')[1].strip())  # → 42 21
import sys
sys.breakpointhook = lambda *a, **k: print('точка останова пропущена')
breakpoint()  # → точка останова пропущена — так breakpoint() можно перенаправить

См. также

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