Debug в IDEA

Відкрита

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, вона призупинятиметься.

В IntelliJ IDEA, щоб установити точку зупинки (break point) на певному рядку, досить просто клацнути мишею ліворуч від цього рядка. Приклад:

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

Якщо знову клацнути мишею на панелі ліворуч, установлену точку зупинки (break point) буде скасовано.

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


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

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

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

У верхній частині знімка екрана ви бачите код програми з двома точками зупинки. Програму призупинено на рядку 10 — його виділено синім кольором. Команда в рядку 10 ще не виконана, і в консоль ще нічого не виведено.

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

Для того щоб продовжити виконання програми після призупинення, натисніть у нижній частині вікна кнопку Resume Program на панелі ліворуч або натисніть клавішу F9.

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

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

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


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

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

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

Після того як програма зупиниться, її можна буде виконувати рядок за рядком. Якщо натиснути клавішу F8 один раз, буде виконано один рядок.

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

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


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

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

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

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

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

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

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

Коментарі (16)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
hidden #3500645
Рівень 30
25 жовтня 2024, 16:54
побачила, що в коментарях пишуть про комбінації для маку, що незручно їх шукати/підбирати можливо комусь в майбутньому допоможе, в IntelliJ вже все продумали за нас якщо зайти у розділ Help і натиснути кнопку Keyboard Shortcuts PDF Вас перенаправить на сайт resources.jetbrains.com з актуальними скороченнями (окремий лист для Windows/Linux і окремий для Mac), правда англійською мовою.. зате PDF-ка векторна, можна тягнути до будь-якого розміру, хоч плакат на всю стіну повісити, щоб перед очима скорочення були 👍👍 IntelliJ IDEA Keyboard Shortcuts PDF
Dmytro
Рівень 26
28 травня 2024, 14:59
у кого-то внизу там 33й....а у меня только 3й))
Oleksandra
Рівень 3
29 серпня 2023, 23:51
Будь ласка, дублюйте комбінації і для маку, бо незручно шукати десь ще їх і підбирати
14 серпня 2023, 08:17
відчуваю, шо то буде цікава, але довга подорож javarush
Игорь Братусь Java Developer в Freelance
3 травня 2023, 23:20
плохо что на мак не написали комбинации ( мне очень было бы это полезно
Haha Monkey
Рівень 6
7 листопада 2022, 17:09
Я читаю це і ніхуя не розумію
SANEK Pidoras в Avito
3 березня 2023, 18:31
жіза
Віталій
Рівень 33
16 січня 2022, 12:53
"Java" наче нова мова з нуля; є страх що не "схаваю" такий об'єм нової інформації)))
dianosauric
Рівень 42
5 вересня 2022, 13:24
Пройшло 9 місяців з цього коментаря і ти вже 33 лвл. Рада, що страх не справдився)
Alexoria Backend Developer
28 грудня 2022, 19:19
пройшло вже майже 5 місяців після твого коментаря, дивлюсь на твій лвл і уявляю як хтось буде дивитись на цю цепочку коментарів і думати те саме, що і я: "ну чели дають"
dianosauric
Рівень 42
30 грудня 2022, 10:51
а потім він додасть сюди свій коментар і через декілька місяців вже й про нього/неї так думатимуть :3
Viktor Shcherbyna
Рівень 6
26 лютого 2023, 13:28
Звісно додам! А наступні нехай голову ламають від вкладення рівнів коментарів)
dianosauric
Рівень 42
27 лютого 2023, 10:20
і мотивуються дійти до цих рівнів)
Oleh
Рівень 7
14 квітня 2023, 15:33
Питання в тому з якою інтенсивністю тут проходити навчання) А то в мене складається враження що до 33 рівня мені знадобиться 9 років, а не місяців)
9 липня 2023, 23:12
ну чели дають
Artur Shabanov
Рівень 30
2 квітня, 15:03
Залишу тут теж свій коментар, чисто для себе, що коли буду думати про те щоб здатися то буду згадувати цей коментар і думати що про мене люди скажуть з джавараш)