ISPPO_HW_6
Отладка программных продуктов на Python
Задание 1. Отладка с помощью print() и logging
Исправленный код
В исходном коде были две ошибки:
- Логическая ошибка: Цикл
не включает числоrange(1, n), поэтому факториал считался неверно (для 5 получалось 24 вместо 120). Исправлено наn.range(1, n + 1) - Отсутствие обработки типов: Передача строки вызывала скрытую ошибку или некорректное поведение. Добавлена проверка типа.
Вывод
Модуль значительно удобнее , так как позволяет гибко управлять уровнем детализации (DEBUG, INFO, ERROR) без удаления кода и автоматически добавляет метки времени и уровень важности. требует ручного удаления или комментирования отладочных строк перед релизом, что повышает риск ошибок. Для серьезных проектов является стандартом благодаря возможности записи в файлы и ротации логов.
Задание 2. Работа с отладчиком pdb
Код с точкой останова
Описание процесса отладки
При запуске скрипта выполнение приостанавливается на строке с .
- Команда
(list) показала контекст кода вокруг текущей строки.l - Команда
(next) позволила выполнить строку и перейти к началу цикла.n - Внутри цикла с помощью команды
иp iотслеживались значения переменных на каждой итерации. Было замечено, что при использованииp resultпеременнаяrange(1, n)никогда не достигала значенияi, что подтвердило логическую ошибку.n - Команда
(continue) завершила выполнение программы.c
Вывод
Инструмент оказался полезнее логирования тем, что позволил интерактивно исследовать состояние программы "здесь и сейчас", не перезапуская её многократно с разными уровнями логов. Возможность проверять произвольные выражения и изменять переменные на лету ускоряет поиск причин некорректного поведения алгоритма.
Задание 3. Использование интегрированной среды разработки (IDE)
- Скриншот 1:

- Скриншот 2:

- Скриншот 3:

Преимущества IDE
IDE предоставляет визуальный интерфейс для отслеживания переменных и стека вызовов, что делает процесс отладки интуитивно понятным и быстрым по сравнению с консольным вводом команд в `pdb**. Графическое отображение изменений значений в реальном времени позволяет мгновенно выявлять аномалии в логике программы без необходимости вручную печатать имена переменных.
Задание 4. Обработка исключений и трассировка
Модифицированный код
Анализ трассировки
Вывод предоставляет полную цепочку вызовов функций, ведущих к ошибке, включая имена файлов, номера строк и код, который вызвал исключение. Это позволяет точно локализовать место сбоя даже в сложных проектах с глубокой вложенностью вызовов. Кроме того, сообщение об ошибке () сразу указывает на причину (неверный тип или значение), что ускоряет исправление кода.
Вывод
Использование блока в сочетании с превращает аварийное завершение программы в контролируемый процесс, предоставляя разработчику исчерпывающую диагностическую информацию. Это критически важно для создания надежных приложений, которые должны корректно реагировать на некорректный ввод пользователя, а не просто "падать".