|
@@ -0,0 +1,111 @@
|
|
|
+**Отладка**
|
|
|
+
|
|
|
+Отладка, или debugging, - это поиск (локализация), анализ и устранение
|
|
|
+ошибок в программном обеспечении, которые были обнаружены в ходе
|
|
|
+тестирования.
|
|
|
+
|
|
|
+**Типы ошибок**
|
|
|
+
|
|
|
+**Ошибки компиляции**
|
|
|
+
|
|
|
+Это простые ошибки, которые обнаруживаются в скомпилированных языках
|
|
|
+программирования компилятором (программой, преобразующей текст на языке
|
|
|
+программирования в набор машинных кодов). Если компилятор показывает
|
|
|
+несколько ошибок, отладка кода начинается с исправления самой первой,
|
|
|
+поскольку она может быть причиной других.
|
|
|
+
|
|
|
+**Ошибки компоновки**
|
|
|
+
|
|
|
+Ошибки связаны с разрешением внешних ссылок. Определяет компоновщик
|
|
|
+(редактор ссылок) при объединении программных модулей. Простым примером
|
|
|
+является ситуация, когда необходимо получить доступ к подпрограмме
|
|
|
+другого модуля, но она не найдена во время компоновки. Ошибки также
|
|
|
+легко найти и исправить.
|
|
|
+
|
|
|
+**Ошибки выполнения (RUNTIME Error)**
|
|
|
+
|
|
|
+Ошибки, обнаруживаемые операционной системой, оборудованием или
|
|
|
+пользователями при выполнении программы. Они считаются непредсказуемыми
|
|
|
+и проявляются после успешной компиляции и компоновки.
|
|
|
+
|
|
|
+**Ошибки определения данных или неправильное определение исходных
|
|
|
+данных.**
|
|
|
+
|
|
|
+**К ним относятся:**
|
|
|
+
|
|
|
+**- Ошибки преобразования;**
|
|
|
+
|
|
|
+**- Ошибки данных;**
|
|
|
+
|
|
|
+**- Ошибки перезаписи.**
|
|
|
+
|
|
|
+**Логические ошибки**. Они могут возникать из-за ошибок, которые были
|
|
|
+допущены при выборе методов, разработке алгоритмов, определении
|
|
|
+структуры данных и кодировании модуля.
|
|
|
+
|
|
|
+В эту группу входят:
|
|
|
+
|
|
|
+**Ошибки неправильного использования переменных.** К ним относятся
|
|
|
+неправильный выбор типов данных, использование индексов, выходящих за
|
|
|
+рамки определения массивов, использование переменных перед присвоением
|
|
|
+переменной начального значения, нарушения соответствия типов данных;
|
|
|
+
|
|
|
+**Ошибки вычислений.** Это некорректная работа с переменными,
|
|
|
+некорректное преобразование типов данных в процессе расчета;
|
|
|
+
|
|
|
+**Некорректная реализация логики в программировании.**
|
|
|
+
|
|
|
+**Ошибки накопления погрешностей.** Они могут возникать при неправильном
|
|
|
+округлении, игнорировании ограничений битовой сетки, использовании
|
|
|
+приближенных методов расчета и т.д.
|
|
|
+
|
|
|
+**Методы отладки ПО**
|
|
|
+
|
|
|
+**Метод ручного тестирования**
|
|
|
+
|
|
|
+Отладка программы заключается в тестировании вручную с использованием
|
|
|
+набора тестов, при работе с которым была допущена ошибка. Несмотря на
|
|
|
+свою эффективность, метод нельзя использовать для больших программ или
|
|
|
+программ со сложными вычислениями. Ручное тестирование используется как
|
|
|
+неотъемлемая часть других методов отладки.
|
|
|
+
|
|
|
+**Метод индукции**
|
|
|
+
|
|
|
+Основой отладки системы является тщательный анализ проявлений ошибки.
|
|
|
+Это могут быть сообщения об ошибках или неверные результаты вычислений.
|
|
|
+Например, если компьютер зависает во время выполнения программы, то для
|
|
|
+того, чтобы найти фрагмент проявления ошибки, нужно проанализировать
|
|
|
+недавние действия пользователя. На этапе отладки программы строятся
|
|
|
+гипотезы, каждая из них проверяется. Если гипотеза подтверждается,
|
|
|
+информация об ошибке детализируется, если нет, выдвигаются новые.
|
|
|
+
|
|
|
+Вот как выглядит процесс:
|
|
|
+
|
|
|
+{width="2.4298611111111112in"
|
|
|
+height="4.250659448818897in"}
|
|
|
+
|
|
|
+Важно, чтобы выдвинутая гипотеза объясняла все проявления ошибки. Если
|
|
|
+объясняется только часть из них, то либо гипотеза неверна, либо ошибок
|
|
|
+несколько.
|
|
|
+
|
|
|
+**Метод дедукции**
|
|
|
+
|
|
|
+Сначала эксперты предполагают множество причин, по которым могла
|
|
|
+возникнуть ошибка. Затем они анализируют их, исключают те, которые
|
|
|
+противоречат имеющимся данным. Если все причины были исключены,
|
|
|
+проводится дополнительное тестирование. В обратном случае пытаются
|
|
|
+доказать наиболее вероятную причину.
|
|
|
+
|
|
|
+{width="3.5347222222222223in"
|
|
|
+height="3.429180883639545in"}
|
|
|
+
|
|
|
+**Метод обратного отслеживания**
|
|
|
+
|
|
|
+Это эффективно для небольших программ. Все начинается с точки, где
|
|
|
+выводится неверный результат. Для точки выдвигается гипотеза о значениях
|
|
|
+основных переменных, которые могли бы привести к ошибке. Далее,
|
|
|
+основываясь на этой гипотезе, делаются предположения о значениях
|
|
|
+переменных в предыдущей точке. Процесс продолжается до тех пор, пока не
|
|
|
+будет обнаружена ошибка.
|
|
|
+
|
|
|
+Литература: https://blog.skillfactory.ru/glossary/otladka-debugging/
|