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 включает в себя активное использование инструментов отладки и практик для выявления и устранения ошибок.
Шаги отладки:
- Установка точек останова: установите точки остановки в коде, чтобы остановить выполнение программы в интересующих вас местах.
- Пошаговое выполнение: выполняйте программу шаг за шагом, наблюдая за изменениями в состоянии программы и значениями переменных.
- Анализ переменных: изучайте значения переменных и выражений на различных этапах выполнения программы, чтобы выявить некорректные данные или логические ошибки.
- Исправление ошибок: внесите изменения в код для устранения найденных ошибок.
- Повторное тестирование: после исправления ошибок проведите тестирование программы, чтобы убедиться, что ошибка устранена и не возникли новые проблемы.
Выглядит просто, не так ли? Вот в следующей лекции мы подробно по всем этапам и пройдемся :)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ