Please enable JavaScript.
Coggle requires JavaScript to display documents.
Конспект - Coggle Diagram
Конспект
-
-
Принципы исправления ошибок еще больше похожи на законы Мерфи: Там, где найдена одна ошибка, возможно, есть и другие. Вероятность, что ошибка найдена правильно, никогда не равна
100%
Отладка бывает двух видов: Синтаксическая отладка. Синтаксические
ошибки выявляет компилятор, поэтому исправлять их достаточно легко.
Здесь компилятор сам ничего выявить не сможет, хотя в среде программирования обычно существуют вспомогательные средства отладки, о которых мы еще поговорим.
Семантическая (смысловая) отладка. Ее время наступает тогда, когда синтаксических ошибок не осталось, но результаты программа выдает неверные.
Отладка — это процесс локализации и исправления ошибок в
программе. Как бы тщательно мы ни писали, отладка почти всегда занимает
больше времени, чем программирование.
Силовые методы
Использование дампа (распечатки) памяти. Это интересно с
познавательной точки зрения: можно досконально разобраться в машинных
процессах.
Иногда такой подход даже необходим - например, когда речь идет
о выделении и высвобождении памяти под динамические переменные с использованием недокументированных возможностей языка.
Использование отладочной печати в тексте программы - произвольно и в большом количестве. Получать информацию о выполнении каждого оператора тоже небезынтересно. Но здесь мы снова сталкиваемся со слишком большими объемами информации.
Использование автоматических средств отладки - трассировки с отслеживанием промежуточных значений переменных. Пожалуй, это самый
распространенный способ отладки.
-
Метод индукции - анализ программы от частного к общему. Просматриваем симптомы ошибки и определяем данные, которые имеют к ней хоть какое-то отношение. Затем, используя тесты, исключаем маловероятные гипотезы, пока не остается одна, которую мы пытаемся уточнить и доказать.
Метод дедукции - от общего к частному. Выдвигаем гипотезу, которая может объяснить ошибку, пусть и не полностью. Затем при помощи тестов эта гипотеза проверяется и доказывается.
Обратное движение по алгоритму. Отладка начинается там, где впервые встретился неправильный результат. Затем работа программы прослеживается (мысленно или при помощи тестов) в обратном порядке, пока не будет обнаружено место возможной ошибки.
Метод тестирования. Давайте рассмотрим процесс локализации ошибки на конкретном примере. Пусть дана небольшая программа, которая выдает значение максимального из трех введенных пользователем чисел.