Python breakpoint()

Python breakpoint() – это новая встроенная функция, представленная в Python 3.7. Отладка кода на Python всегда была болезненным процессом из-за тесной связи между фактическим кодом и кодом модуля отладки. Например, если вы используете отладчик pdb, то вам придется вызывать pdb.set_trace() в коде вашей программы. Если вы хотите использовать другой отладчик, скажем, web-pdb, то вам придется удалить весь код, связанный с PDB, и добавить метод web_pdb.set_trace(). Это вызывает значительные затраты при использовании отладчика Python и делает код на Python сложным для отладки и поддержки. Поэтому в Python 3.7 был введен метод breakpoint(), который позволяет нам писать код отладки с низкой связанностью.

Python breakpoint()

Функция breakpoint() вызывает функцию sys.breakpointhook(). По умолчанию sys.breakpointhook() вызывает функцию pdb.set_trace(). Таким образом, по меньшей мере, использование breakpoint() обеспечивает удобство при использовании отладчика, потому что нам не нужно явно импортировать модуль pdb. Давайте рассмотрим простой пример использования функции breakpoint(). У нас есть скрипт на Python python_breakpoint_examples.py с следующим кодом.

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

При выполнении этого скрипта открывается консоль отладчика PDB.

$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$

Точка останова Python() – Останов отладки

Функция sys.breakpointhook() в Python использует переменную среды PYTHONBREAKPOINT для настройки отладчика. Если не установлено, используется отладчик PDB по умолчанию. Если установлено значение “0”, то функция немедленно возвращает управление, и отладка кода не выполняется. Это очень полезно, когда мы хотим запустить наш код без отладки.

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

Точка останова Python() – Изменение модуля отладчика

Мы можем использовать переменную среды PYTHONBREAKPOINT для предоставления метода отладчика, который будет вызван функцией breakpoint(). Это очень удобно, потому что мы можем легко изменить модуль отладчика без изменения кода. Допустим, мы хотим использовать отладчик web-pdb. Мы легко можем подключить его к нашей программе, используя PYTHONBREAKPOINT=web_pdb.set_trace. Прежде всего, убедитесь, что web-pdb установлен. Вы можете установить его с помощью команды pip3.7 install web-pdb.

Согласно документации web-pdb, он совместим с новой функцией breakpoint(), добавленной в Python 3.7.

$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...

Откройте веб-сервер по URL, указанному в журнале консоли, и вы увидите окно отладчика, подобное изображенному ниже. Мы можем отправлять команды PDB с помощью этого интерфейса, вы можете отправить команду “c”, чтобы продолжить выполнение и завершить нашу программу.

Резюме

Функция breakpoint() в Python – очень полезное дополнение к функции отладки Python. Рекомендуется использовать ее для отладки, чтобы вы могли легко подключать другие отладчики сторонних разработчиков на лету. Она также предоставляет простой способ отключить отладчик и запустить программу в обычном режиме.

Вы можете ознакомиться с дополнительными примерами на Python в нашем репозитории GitHub.

Ссылка: Официальная документация

Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint