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 і покроково виконуєте весь його код.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ