Python 3.7+sysфункция
sys.breakpointhook()
отладка и трассировка
Функция, которую вызывает встроенная breakpoint(). По умолчанию открывает pdb; подменив её, можно выбрать другой отладчик или отключить остановки.
Синтаксис
sys.breakpointhook = hook
Забытый breakpoint() в решении на сервере проверки ждёт ввода и вешает прогон — переменная окружения PYTHONBREAKPOINT=0 превращает все такие вызовы в пустые. Но если программа сама присвоила sys.breakpointhook, переменная уже не читается. Аргументы breakpoint(*args, **kw) передаются хуку как есть, а его результат возвращает breakpoint(). Исходный хук — sys.__breakpointhook__.
Примеры
import sys
def stop(*args, **kw):
print('стоп', args, kw)
sys.breakpointhook = stop
breakpoint('x', depth=1) # → стоп ('x',) {'depth': 1}
sys.breakpointhook = sys.__breakpointhook__
import os, subprocess, sys
env = dict(os.environ, PYTHONBREAKPOINT='0')
code = 'breakpoint(); print("дальше")'
r = subprocess.run([sys.executable, '-c', code], env=env,
capture_output=True, text=True, timeout=10)
print(r.stdout.strip()) # → дальше
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности