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
.
Якщо натиснути цю кнопку (або F9
), програма продовжуватиме роботу, доки не зустріне наступну точку зупинки або не завершиться. На знімку нижче показано стан вікна після натиснення кнопки продовження виконання:
Програма зупинилася на другій точці зупинки, а на консоль виведено слова Привіт
та і
, тобто з трьох рядків з командами виведення на екран виконано тільки два.
5. Покрокове виконання
Коли вашу програму запущено в режимі налагодження, її можна виконувати по кроках: один крок — один рядок. Для покрокового виконання використовуються дві гарячі клавіші: F7
і F8
: кожна з них запускає виконання поточного рядка коду. Однак спочатку вам потрібно призупинити свою програму за допомогою точки зупинки — break point.
Якщо ви хочете виконувати програму рядок за рядком, установіть точку зупинки (break point) на початку методу main()
і запустіть програму в режимі налагодження.
Після того як програма зупиниться, її можна буде виконувати рядок за рядком. Якщо натиснути клавішу F8
один раз, буде виконано один рядок.
Отакий вигляд матиме наша програма, якщо після зупинки натиснути клавішу F8
один раз:
Перший рядок методу вже виконано, і тепер поточний рядок — другий. Крім того, ви можете побачити в нижній частині знімка, що на екран уже виведено слово Привіт
.
6. Покрокове виконання з проходженням методів
Якщо у вашій програмі є власні методи і ви хочете, щоб в режимі налагодження ваша програма не просто виконувалася покроково, але й входила всередину ваших методів, для «проходження методу» потрібно натискати не клавішу F8
, а клавішу F7
.
Припустімо, ваша програма виконується покроково та щойно зупинилася на 5-му рядку. Якщо натиснути клавішу F8
, IDEA просто виконає п'ятий рядок і перейде до шостого.
Але якщо натиснути клавішу F7
, IDEA покроково виконає метод main2()
:
Все дуже просто. Якщо вам не дуже важливо, що і як саме відбувається всередині методу, натискайте F8
, а якщо важливо — F7
, і тоді весь код методу буде виконано покроково.