PyCharm Debug

Модуль 1: Python Core
10 уровень , 8 лекция
Открыта

9.1 Запуск дебагера

Мы будем изучать процесс дебага на основе PyCharm, что логично и приятно. Сейчас вы в этом убедитесь.

В PyCharm можно запустить вашу программу в двух режимах:

Режимы запуска программы Иконка на панели Горячие клавиши
Обычное выполнение Shift+F10
Запуск в режиме отладки Shift+F9

С обычным режимом работы вы уже знакомы: программа запустится, отработает и завершится. А вот режим отладки несет для вас немало сюрпризов.

Режим отладки

Режим отладки позволяет пошагово выполнить всю вашу программу. Или правильнее будет сказать, построчно: строка за строкой. При этом вы можете наблюдать значения переменных на каждом шаге программы (после выполнения каждой строки кода). И даже менять их значения!

Чтобы минимально овладеть искусством отладки программы, вам нужно изучить три вещи:

  • Точки остановки
  • Пошаговое выполнение
  • Просмотр значений переменных

9.2 Точки остановки (Break Points)

IDE позволяет вам разместить в коде специальные метки — точки остановки (break point). Каждый раз, когда программа, запущенная в режиме отладки, будет доходить до строки, отмеченной как break point, она будет становиться на паузу.

Чтобы поставить break point на определенной строке, нужно просто кликнуть в PyCharm слева от этой строки. Пример:

В результате строка будет отмечена точкой остановки (break point), и PyCharm подсветит всю строку красным цветом:

Повторный клик мышкой на панели слева от кода снимет установленный break point.

Также break point можно просто поставить на текущей строке с помощью горячей комбинации клавиш — Ctrl+F8. Повторное нажатие Ctrl+F8 на строке, где уже есть break point, удаляет его.

9.3 Запуск программы в режиме отладки (дебага)

Если у вас в программе есть хотя бы одна точка остановки, вы можете запускать программу в режиме отладки (Shift+F9 или «иконка с жуком»).

После запуска в режиме отладки программа выполняется как обычно. Но как только она дойдет до выполнения строки кода, помеченного break point, встанет на паузу. Пример:

В верхней половине скриншота вы видите код программы с двумя точками остановки. Программа замерла на строке 2 — отмечена синей линией. Строка 2 еще не выполнилась: в консоль еще ничего не выводилось.

В нижней половине экрана вы видите панели режима отладки: панель Thread & variables, панель Console (вывод на экран), а также набор кнопок для режима отладки.

Вы можете снять вашу программу с паузы (продолжить её выполнение), если нажмете кнопку Resume Program на панели слева снизу (или нажмете клавишу F9).

Если нажать такую кнопку (или F9), программа продолжит работу, пока не встретит следующую точку остановки или не завершится. Вот что мы увидим после нажатия этой кнопки:

Программа остановилась на второй точке остановки, а в консоль выведены слова "Hello" и "and" – признак того, что из трёх строк вывода на экран выполнились только две.

9.4 Пошаговое выполнение

Если ваша программа работает в режиме отладки, вы также можете выполнять её пошагово: один шаг — одна строка. Для пошагового выполнения есть две горячие клавиши: F7 и F8: каждая из них приводит к выполнению текущей строки кода. Но сначала вам нужно будет всё же остановить вашу программу с помощью break point.

Если вы хотите выполнять вашу программу построчно, вам нужно поставить break point в самом начале — на первой строке с кодом — и запустить её в режиме отладки.

Когда программа остановится, вы сможете начать построчное её выполнение. Одно нажатие клавиши F8 — одна строка.

Вот как будет выглядеть наша программа после остановки и нажатия клавиши F8 один раз:

Первая строка — print("Hello") — уже выполнилась, и текущая строка — вторая. Вы также можете видеть в нижней части скриншота, что на экран уже вывелось слово "Hello".

9.5 Пошаговое выполнение с заходом в функции

Если у вас есть в программе собственные функции, и вы хотите, чтобы в режиме отладки ваша программа не просто выполнялась пошагово, но и заходила внутрь ваших функций, то для «захода в функцию» вам нужно нажимать не клавишу F8, а клавишу F7.

Допустим, вы пошагово выполняете программу и сейчас остановились на 5-й строке. Если вы нажмёте кнопку F8, PyCharm просто выполнит пятую строку и перейдёт к шестой.

А вот если вы нажмёте F7, PyCharm будет пошагово выполнять функцию hello():

Всё очень просто. Если вам не сильно важно, что и как происходит внутри метода, вы нажимаете F8, если важно — F7 и пошагово выполняете весь его код.

Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
4 июля 2025
Хорошая, понятно изложенная, полезная лекция. Лайк
UnknownReboot Уровень 30
20 февраля 2025
Надо эту лекцию перед декораторами давать, было бы меньше вывихов мозга!
Игорь Уровень 25
27 января 2025
Еще бы на скриншотах выделять функции, а не просто писать горячую клавишу — был бы огонь. Ибо все f7 и тд на macOS просто так не работают))))