8.1 Виникнення багів
Відлагодження програмного забезпечення — це процес пошуку та виправлення помилок або багів в програмі. Цей процес є найцікавішою і важливою частиною розробки програмного забезпечення і допомагає забезпечити правильну роботу програм.
Історія виникнення терміна "bug"
Термін "bug" (помилка) в контексті комп'ютерних програм вперше почав використовуватися в 1940-х роках. Хоча сама концепція "багів" існувала і до появи комп'ютерів, позначаючи механічні несправності в різних пристроях.
Перший задокументований випадок використання терміна "bug" в комп'ютерній техніці був з командою, яка працювала на комп'ютері Mark II в Гарвардському університеті в 1947(!) році. Команда виявила, що одне з реле машини не працювало через те, що в нього потрапила міль. Вони видалили комаху і записали це в журнал як "перший реальний випадок виявлення комахи" (literal bug).
Хоча це і не був перший випадок використання терміна "bug" для позначення помилки, цей інцидент став відомим і сприяв популяризації терміна «bug».
Відлагодження програми
Відлагодження — це процес пошуку, діагностики і виправлення багів в програмному забезпеченні. Процес відлагодження включає кілька етапів:
- Виявлення помилки: Визначення симптомів, що вказують на наявність помилки в програмі.
- Відтворення помилки: Створення умов, при яких помилка проявляється знову, щоб краще зрозуміти її природу.
- Діагностика проблеми: Використання різних інструментів і методів для аналізу коду і пошуку причини помилки.
- Виправлення помилки: Внесення змін в код для усунення помилки.
- Тестування: Перевірка виправлення і тестування програми, щоб переконатися, що помилка усунена і не з'явилися нові проблеми.
Тож баг (bug) — це загальна назва для будь-яких помилок в програмах, а дебаг(de-bug) — це процес виявлення і усунення цих самих помилок.
8.2 Інструменти і методи відлагодження
Логування
Додавання логів в код програми дозволяє відслідковувати її виконання і отримувати інформацію про стан змінних і операцій в різних точках виконання програми. Для логування в Python є чудова бібліотека — logging.
Приклад використання логування:
import logging
# Налаштування логування для виводу відлагоджувальної інформації
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
# Логуємо спробу ділення
logging.debug(f"Ділення {a} на {b}")
if b == 0:
# Логуємо помилку, якщо b дорівнює 0
logging.error("Спроба ділення на нуль!")
return None
# Виконуємо ділення, якщо b не дорівнює 0
return a / b
result = divide(10, 2)
print(result)
Використання відлагоджувачів (Debuggers)
Відлагоджувачі — це інструменти, які дозволяють розробникам виконувати програму покроково, встановлювати точки зупинки (breakpoints), перевіряти значення змінних і змінювати їх під час виконання програми.
Популярні відлагоджувачі:
- GDB: GNU Debugger для C, C++ та інших мов програмування.
- PDB: Вбудований відлагоджувач Python.
- Visual Studio Debugger: Відлагоджувач, вбудований у Microsoft Visual Studio.
- PyCharm Debugger: Відлагоджувач, вбудований в IDE PyCharm для Python.
Приклад використання PDB
import pdb
def faulty_function(a, b):
pdb.set_trace() # Встановлення точки зупинки
result = a / b
return result
faulty_function(10, 0)
Коли програма досягає pdb.set_trace(), вона зупиняється, і ви можете виконувати команди відлагоджувача, такі як next (наступний крок), print (вивід значення змінної) та інші.
Ми з вами будемо вивчати дебаг програм на прикладі відлагоджувача вбудованого в PyCharm.
8.3 Використання debug
В загальному вигляді debug включає активне використання інструментів відлагодження і практик для виявлення і усунення помилок.
Встановлення точок зупинки: Встановіть точки зупинки в коді, щоб зупинити виконання програми в цікавих для вас місцях.
Покрокове виконання: Виконуйте програму крок за кроком, спостерігаючи за змінами в стані програми і значеннях змінних.
Аналіз змінних: Вивчайте значення змінних і виразів на різних стадіях виконання програми, щоб виявити некоректні дані або логічні помилки.
Виправлення помилок: Внесіть зміни в код для усунення знайдених помилок.
Повторне тестування: Після виправлення помилок проведіть тестування програми, щоб переконатися, що помилка усунена і не виникли нові проблеми.
Виглядає просто, чи не так? Ось на наступній лекції ми детально по всіх етапах і пройдемося :)
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ