9.1 Виникнення багів
Налагодження програмного забезпечення — це процес пошуку та виправлення помилок або багів у програмі. Це найцікавіша частина розробки ПЗ, яка допомагає забезпечувати правильну роботу програм.
Історія виникнення терміну "bug"
Термін "bug" (помилка) у контексті комп'ютерних програм уперше почав використовуватися у 1940-х роках. Хоча сама концепція "багів" існувала й до появи комп'ютерів, позначаючи механічні несправності у різних пристроях.
Перший задокументований випадок використання терміну "bug" у комп'ютерній техніці був із командою, яка працювала на комп'ютері Mark II у Гарвардському університеті у 1947(!) році. Команда виявила, що одна з реле машини не працювала через те, що в неї потрапила міль. Вони видалили комаху і записали це в журнал як "перший реальний випадок виявлення комахи" (literal bug).
Хоча це й не був перший випадок використання терміну "bug" для позначення помилки, цей інцидент став відомим і сприяв популяризації терміну «bug».
Налагодження програми
Налагодження — це процес пошуку, діагностики та виправлення багів у програмному забезпеченні. Процес налагодження складається з кількох етапів:
- Виявлення помилки: визначення симптомів, що вказують на наявність помилки в програмі.
- Відтворення помилки: створення умов, за яких помилка проявляється знову, щоб краще зрозуміти її природу.
- Діагностика проблеми: використання різних інструментів та методів для аналізу коду та пошуку причини помилки.
- Виправлення помилки: внесення змін у код для усунення помилки.
- Тестування: перевірка виправлення та тестування програми, щоб переконатися, що помилка усунена і не з'явилися нові проблеми.
Тож баг (bug) — це загальна назва для будь-яких помилок у програмах, а дебаг (de-bug) — це процес виявлення та усунення цих самих помилок.
9.2 Інструменти та методи налагодження
Логування
Додавання логів у код програми дозволяє відстежувати її виконання та отримувати інформацію про стан змінних і операцій у різних точках виконання програми. Для логування в JavaScript є чудова бібліотека — winston.
Приклад використання логування:
const { createLogger, format, transports } = require('winston');
// Створюємо логгер з рівнем відладки
const logger = createLogger({ level: 'debug' });
// Функція ділення
function divide(a, b) {
logger.debug(`Ділення ${a} на ${b}`);
if (b === 0) {
logger.error("Спроба ділення на нуль!");
return null;
}
return a / b;
}
// Приклад використання функції
const result = divide(10, 2);
console.log(result); // Виведе: 5
Використання відладчиків (Debuggers)
Відладчики — це інструменти, які дозволяють розробникам виконувати програму покроково, встановлювати точки зупинки (breakpoints), перевіряти значення змінних і змінювати їх під час виконання програми.
Популярні відладчики для JavaScript:
- Chrome DevTools: вбудований відладчик у браузері Google Chrome
- Firefox Developer Tools: вбудований відладчик у браузері Mozilla Firefox
- Node.js Debugger: вбудований відладчик для серверного JavaScript у Node.js
- Visual Studio Code Debugger: відладчик, вбудований у редактор Visual Studio Code
Приклад використання відладчика у Node.js:
// Імпорт вбудованого модуля відладки
const { inspect } = require('util');
// Приклад функції з помилкою
function faultyFunction(a, b) {
debugger; // Встановлення точки зупинки
let result = a / b;
return result;
}
// Виклик функції з помилкою
console.log(faultyFunction(10, 0));
Коли програма досягає debugger, вона зупиняється, і ви можете використовувати команди відладчика, такі як крок вперед (step over), вхід всередину (step into), вихід (step out), перевірка значень змінних та інші.
Ми з вами будемо вивчати дебаг програм на прикладі відладчика, вбудованого в Intellij IDEA (потрібна версія Ultimate Edition).
9.3 Використання debug
Загалом debug включає в себе активне використання інструментів налагодження та практик для виявлення та усунення помилок.
Кроки налагодження:
- Установлення точок зупинки: встановіть точки зупинки у коді, щоб зупинити виконання програми в цікавих для вас місцях.
- Покрокове виконання: виконуйте програму крок за кроком, спостерігаючи за змінами у стані програми та значенням змінних.
- Аналіз змінних: вивчайте значення змінних і виразів на різних етапах виконання програми, щоб виявити некоректні дані або логічні помилки.
- Виправлення помилок: внесіть зміни у код для усунення знайдених помилок.
- Повторне тестування: після виправлення помилок проведіть тестування програми, щоб переконатися, що помилка усунена і не виникли нові проблеми.
Виглядає просто, правда? Ось у наступній лекції ми детально по всіх етапах і пройдемося :)
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ