Debugging_LVS.md 7.2 KB

Отладка

Отладка, или debugging, - это поиск (локализация), анализ и устранение ошибок в программном обеспечении, которые были обнаружены в ходе тестирования.

Типы ошибок

Ошибки компиляции

Это простые ошибки, которые обнаруживаются в скомпилированных языках программирования компилятором (программой, преобразующей текст на языке программирования в набор машинных кодов). Если компилятор показывает несколько ошибок, отладка кода начинается с исправления самой первой, поскольку она может быть причиной других.

Ошибки компоновки

Ошибки связаны с разрешением внешних ссылок. Определяет компоновщик (редактор ссылок) при объединении программных модулей. Простым примером является ситуация, когда необходимо получить доступ к подпрограмме другого модуля, но она не найдена во время компоновки. Ошибки также легко найти и исправить.

Ошибки выполнения (RUNTIME Error)

Ошибки, обнаруживаемые операционной системой, оборудованием или пользователями при выполнении программы. Они считаются непредсказуемыми и проявляются после успешной компиляции и компоновки.

Ошибки определения данных или неправильное определение исходных данных.

К ним относятся:

- Ошибки преобразования;

- Ошибки данных;

- Ошибки перезаписи.

Логические ошибки. Они могут возникать из-за ошибок, которые были допущены при выборе методов, разработке алгоритмов, определении структуры данных и кодировании модуля.

В эту группу входят:

Ошибки неправильного использования переменных. К ним относятся неправильный выбор типов данных, использование индексов, выходящих за рамки определения массивов, использование переменных перед присвоением переменной начального значения, нарушения соответствия типов данных;

Ошибки вычислений. Это некорректная работа с переменными, некорректное преобразование типов данных в процессе расчета;

Некорректная реализация логики в программировании.

Ошибки накопления погрешностей. Они могут возникать при неправильном округлении, игнорировании ограничений битовой сетки, использовании приближенных методов расчета и т.д.

Методы отладки ПО

Метод ручного тестирования

Отладка программы заключается в тестировании вручную с использованием набора тестов, при работе с которым была допущена ошибка. Несмотря на свою эффективность, метод нельзя использовать для больших программ или программ со сложными вычислениями. Ручное тестирование используется как неотъемлемая часть других методов отладки.

Метод индукции

Основой отладки системы является тщательный анализ проявлений ошибки. Это могут быть сообщения об ошибках или неверные результаты вычислений. Например, если компьютер зависает во время выполнения программы, то для того, чтобы найти фрагмент проявления ошибки, нужно проанализировать недавние действия пользователя. На этапе отладки программы строятся гипотезы, каждая из них проверяется. Если гипотеза подтверждается, информация об ошибке детализируется, если нет, выдвигаются новые.

Вот как выглядит процесс:

Процесс отладки кода{width="2.4298611111111112in" height="4.250659448818897in"}

Важно, чтобы выдвинутая гипотеза объясняла все проявления ошибки. Если объясняется только часть из них, то либо гипотеза неверна, либо ошибок несколько.

Метод дедукции

Сначала эксперты предполагают множество причин, по которым могла возникнуть ошибка. Затем они анализируют их, исключают те, которые противоречат имеющимся данным. Если все причины были исключены, проводится дополнительное тестирование. В обратном случае пытаются доказать наиболее вероятную причину.

отладка дедукцией{width="3.5347222222222223in" height="3.429180883639545in"}

Метод обратного отслеживания

Это эффективно для небольших программ. Все начинается с точки, где выводится неверный результат. Для точки выдвигается гипотеза о значениях основных переменных, которые могли бы привести к ошибке. Далее, основываясь на этой гипотезе, делаются предположения о значениях переменных в предыдущей точке. Процесс продолжается до тех пор, пока не будет обнаружена ошибка.

Литература: https://blog.skillfactory.ru/glossary/otladka-debugging/