Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зачет по инфе.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
336.26 Кб
Скачать

12.2 Отладка программ.

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

•знать текущие значения переменных;

•знать, путь (граф) выполнения программы.

Существуют два способа отладки.

•Использование отладчиков – программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.

•Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода – на экран, или в файл. Вывод отладочных сведений в файл называется журналированием.

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

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

Профилировщик – программный инструмент позволяющий определить сколько времени выполняется тот или иной участок кода, а анализ покрытия позволяет выявить неисполняемые участки кода.

API логгеры – программный иструмент позволяющий отслеживать взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.

Дизассемблер – программный инструмент позволяющий просмотреть ассемблерный код исполняемого файла.

Сниффер – программа для просмотра сетевого трафика генерируемого программой.

•Логи системы.

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

•Контрактное программирование.

•Модульное тестирование.

•Статический анализ кода

•Высокая культура программирования (правильное форматирование кода) использование правильных методик программирования.

12.3 Принципы контрактного программирования.

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

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

12.4 Принципы модульного тестирования.

Модульное тестирование – процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.

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