Skip to content

Latest commit

 

History

History
44 lines (32 loc) · 2.27 KB

File metadata and controls

44 lines (32 loc) · 2.27 KB

Инструменты разработчика: ошибки, REPL, traceback

← CPython без GIL · 🏠 Домой


  • Более точные сообщения об ошибках (python 3.10-3.11) — трейсбеки стали заметно информативнее: точно указывают, какой атрибут/индекс привёл к ошибке (включая выражения в несколько строк), а NameError/AttributeError подсказывают опечатки ("Did you mean...?").
  • Улучшенный REPL (python 3.13+) — многострочное редактирование, подсветка синтаксиса прямо "из коробки" (написан на чистом python, аналог PyPy-шного REPL).
  • Цветной вывод traceback'ов по умолчанию (python 3.13+) — можно отключить через PYTHON_COLORS=0 / NO_COLOR.

Как поставить точку останова?

Коротко. Встроенная функция breakpoint() — с Python 3.7 вместо import pdb; pdb.set_trace().

def calc(data):
    total = sum(data)
    breakpoint()          # здесь выполнение остановится, откроется pdb
    return total / len(data)

Полезные команды pdb: n — следующая строка, s — зайти внутрь вызова, c — продолжить, l — показать код вокруг, p выражение — напечатать, w — стек вызовов, q — выход.

Подвох. breakpoint() уважает переменную окружения PYTHONBREAKPOINT. PYTHONBREAKPOINT=0 отключает все точки останова, не трогая код, — удобно, чтобы забытый breakpoint() не подвесил прод. Туда же можно подставить другой отладчик: PYTHONBREAKPOINT=ipdb.set_trace.


Дальше — черновые темы для доработки: topics/.

← CPython без GIL · 🏠 Домой