Debug в IDEA

Java Syntax Zero
Рівень 5 , Лекція 7
Відкрита

1. Баг

У програмістів є свій сленг, хоча багато хто вважає, що це технічний жаргон. У будь-якому випадку, вам не уникнути ні знайомства з ним, ні детального вивчення. Так що починайте втягуватися.

Одним з перших слів, з яким ви познайомитесь, буде слово баг, від англійського bug (жук). Це слово позначає помилку в програмі, коли програма робить щось не те або не так. Або просто дивно працює.

Проте, якщо програміст вважає, що програма, хоч і працює дивно, але саме так він і задумував, зазвичай заявляє щось на кшталт «це не баг, це фіча». Що породило купу інтернет-мемів.

В принципі причина неправильної роботи може бути будь-яка: помилка в логіці програми, описки, невірна архітектура програми, аж до проблем у компіляторі. У будь-якому випадку програмістам потрібно виправляти як реальні баги, так і будь-які інші «недоліки», які є у програмі.

Історія слова bug

Найпоширенішою версією походження слова баг є така легенда.

У вересні 1947 року вчені Гарвардського Університету тестували один з перших комп'ютерів — Mark II. Комп'ютер не працював, і в процесі перевірки всіх плат вони знайшли метелика, застряглого між контактами електромеханічного реле.

Витягнуте комаху було приклеєно скотчем в технічний щоденник і супроводжене написом, мовляв «баг знайдено та усунено».

Вважається, що саме ця кумедна історія і послужила початком використання слова баг як позначення помилки, а слово дебаг (debug) стало синонімом усунення помилок.


2. Налагодження програми

Для усунення багів у своїх програмах програмісти використовують спеціальні програми-налагоджувачі (debugger). Деякі з цих програм вміють налагоджувати навіть машинний код.

Java-програмісти для налагодження (debugging) своїх програм використовують IDE. Такі як Intellij IDEA, Eclipse і Net Beans. IntelliJ IDEA на сьогоднішній день є найпотужнішою IDE, тому ми розглянемо процес налагодження на її прикладі.

Intellij IDEA може запускати вашу програму у двох режимах:

Режими запуску програми Іконка на панелі Гарячі клавіші
Звичайне виконання Shift+F10
Запуск у режимі налагодження Shift+F9

З звичайним режимом роботи ви вже знайомі: програма запуститься, відпрацює й завершиться. А ось режим налагодження несе для вас чимало сюрпризів.

Режим налагодження

Режим налагодження дозволяє покроково виконати всю вашу програму. Або правильніше буде сказати, построчно: строка за строкою. При цьому ви можете спостерігати значення змінних на кожному кроці програми (після виконання кожної строки коду). І навіть змінювати їх значення!

Щоб мінімально оволодіти мистецтвом налагодження програми, вам потрібно вивчити три речі:

  • Точки зупинки
  • Покрокове виконання
  • Перегляд значень змінних

3. Точки зупинки (Break Points)

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

Щоб поставити break point на певному рядку, потрібно просто клікнути в IDEA зліва від цього рядка. Приклад:

Точки зупинки (Break Points)

У результаті рядок буде позначений точкою зупинки (break point), і Intellij IDEA підсвітить її червоним кольором:

Точки зупинки (Break Points) 2

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

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


4. Запуск програми в режимі налагодження (дебагу)

Якщо у вашій програмі є хоча б одна точка зупинки, ви можете запускати програму в режимі налагодження (Shift+F9 або «іконка з жуком»).

Після запуску в режимі налагодження програма виконується як завжди. Але як тільки вона доходить до виконання рядка коду, позначеного break point, зупиняється на паузу. Приклад:

Запуск програми в режимі налагодження (дебагу)

У верхній половині скриншота ви бачите код програми з двома точками зупинки. Програма завмерла на рядку 5 — позначена синьою лінією. Рядок 5 ще не виконаний: в консоль ще нічого не виводилося.

У нижній половині екрана ви бачите панелі режиму налагодження: панель Debugger, панель Console (вивід на екран), а також набір кнопок для режиму налагодження.

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

Запуск програми в режимі налагодження (дебагу) 3

Якщо натиснути таку кнопку (або F9), програма продовжить роботу, поки не зустріне наступну точку зупинки або не завершиться. Ось що ми побачимо після натискання такої кнопки:

Запуск програми в режимі налагодження (дебагу) 4

Програма зупинилась на другій точці зупинки, а в консоль виведені слова Привіт та І – ознака того, що з трьох рядків виводу на екран виконалися лише два.


5. Покрокове виконання

Якщо ваша програма працює в режимі налагодження, ви також можете виконувати її покроково: один крокодин рядок. Для покрокового виконання є дві гарячі клавіші: F7 і F8: кожна з них призводить до виконання поточного рядка коду. Але спочатку вам потрібно буде все ж зупинити вашу програму за допомогою break point.

Якщо ви хочете виконувати вашу програму построчно, вам потрібно поставити break point на самому початку методу main() і запустити її в режимі налагодження.

Коли програма зупиниться, ви зможете почати построчно її виконання. Одне натискання клавіші F8 – один рядок.

Ось як виглядатиме наша програма після зупинки й натискання клавіші F8 один раз:

Запуск програми в режимі налагодження (дебагу).Покрокове виконання

Перший рядок методу main вже виконаний, а поточний рядок — другий. Ви також можете бачити в нижній частині скриншота, що на екран вже вивелося слово Привіт.


6. Покрокове виконання із заходом у методи

Якщо у вас є в програмі власні методи, і ви хочете, щоб у режимі налагодження ваша програма не просто виконувалася покроково, але й заходила всередину ваших методів, для «заходу в метод» вам потрібно натискати не клавішу F8, а клавішу F7.

Допустимо, ви покроково виконуєте програму і зараз зупинилися на 4-му рядку. Якщо ви натиснете кнопку F8, IDEA просто виконає четвертий рядок і перейде до п'ятого.

Покрокове виконання із заходом у методи

А ось якщо ви натиснете F7, IDEA буде покроково виконувати метод main2():

Покрокове виконання із заходом у методи 2

Все дуже просто. Якщо вам не дуже важливо, що і як відбувається всередині методу, ви натискаєте F8, якщо важливо — F7 і покроково виконуєте весь його код.

Коментарі (16)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
hidden #3500645 Рівень 30
25 жовтня 2024
побачила, що в коментарях пишуть про комбінації для маку, що незручно їх шукати/підбирати можливо комусь в майбутньому допоможе, в IntelliJ вже все продумали за нас якщо зайти у розділ Help і натиснути кнопку Keyboard Shortcuts PDF Вас перенаправить на сайт resources.jetbrains.com з актуальними скороченнями (окремий лист для Windows/Linux і окремий для Mac), правда англійською мовою.. зате PDF-ка векторна, можна тягнути до будь-якого розміру, хоч плакат на всю стіну повісити, щоб перед очима скорочення були 👍👍 IntelliJ IDEA Keyboard Shortcuts PDF
Dmytro Рівень 26
28 травня 2024
у кого-то внизу там 33й....а у меня только 3й))
Oleksandra Рівень 3
29 серпня 2023
Будь ласка, дублюйте комбінації і для маку, бо незручно шукати десь ще їх і підбирати
14 серпня 2023
відчуваю, шо то буде цікава, але довга подорож javarush
3 травня 2023
плохо что на мак не написали комбинации ( мне очень было бы это полезно
Haha Monkey Рівень 6
7 листопада 2022
Я читаю це і ніхуя не розумію
SANEK Рівень 6
3 березня 2023
жіза
Віталій Рівень 33
16 січня 2022
"Java" наче нова мова з нуля; є страх що не "схаваю" такий об'єм нової інформації)))
dianosauric Рівень 42
5 вересня 2022
Пройшло 9 місяців з цього коментаря і ти вже 33 лвл. Рада, що страх не справдився)
Alexoria Рівень 12
28 грудня 2022
пройшло вже майже 5 місяців після твого коментаря, дивлюсь на твій лвл і уявляю як хтось буде дивитись на цю цепочку коментарів і думати те саме, що і я: "ну чели дають"
dianosauric Рівень 42
30 грудня 2022
а потім він додасть сюди свій коментар і через декілька місяців вже й про нього/неї так думатимуть :3
Viktor Shcherbyna Рівень 6
26 лютого 2023
Звісно додам! А наступні нехай голову ламають від вкладення рівнів коментарів)
dianosauric Рівень 42
27 лютого 2023
і мотивуються дійти до цих рівнів)
Oleh Рівень 7
14 квітня 2023
Питання в тому з якою інтенсивністю тут проходити навчання) А то в мене складається враження що до 33 рівня мені знадобиться 9 років, а не місяців)
9 липня 2023
ну чели дають
Artur Shabanov Рівень 30
2 квітня 2025
Залишу тут теж свій коментар, чисто для себе, що коли буду думати про те щоб здатися то буду згадувати цей коментар і думати що про мене люди скажуть з джавараш)