- •1 Цель и порядок работы
- •2 Краткая теория
- •2.1 Понятие отладки
- •2.2 Разновидности ошибок
- •2.2.1 Ошибки этапа компиляции
- •2.3.2 Выполнение программы до точки прерывания
- •2.3.3 Прекращение отладки
- •2.2.2 Ошибки этапа выполнения
- •2.2.3 Логические ошибки
- •2.3 Методы отладки
- •2.3.1 Установка точки прерывания
- •2.3.4 Пошаговое выполнение программы и трассировка
- •2.3.5 Выполнение программы до курсора
- •2.3.6 Отслеживание значений переменных во время выполнения программы
- •2.3.7 Создание условной точки останова
- •2.4 Работа с отладчиком
- •2.4.1 Выполнение программы по шагам без захода в функцию
- •2.4.2 Выполнение программы по шагам с заходом в функцию (трассировка)
- •3 Контрольные вопросы
2.2.2 Ошибки этапа выполнения
Ошибки этапа выполнения или семантические ошибки происходят, когда после компиляции полной программы, при ее выполнении делается что-то недопустимое. То есть, программа содержит допустимые операторы, но при выполнении операторов что-то происходит неверно. Например, программа может пытаться выполнить деление на ноль или открыть для ввода несуществующий файл.
Когда Visual C++ обнаруживает такую ошибку, он завершает выполнение и выводит окно с сообщением о типе ошибки и адресом инструкции, в которой она произошла (см. рисунок 10.1).
Рисунок 10.1 – Окно ошибки времени выполнения
2.2.3 Логические ошибки
Логические ошибки – это ошибки проектирования и реализации программы. То есть, все операторы допустимы и что-то делают, но не то, что предполагалось. Эти ошибки часто трудно отследить, поскольку IDE не может найти их автоматически, как синтаксические и семантические ошибки. К счастью, IDE включает в себя средства отладки, помогающие найти логические ошибки.
Логические ошибки приводят к некорректному или непредвиденному значению переменных, неправильному виду графических изображений или невыполнению кода, когда это ожидается. Далее рассматриваются методы отслеживания этих логических ошибок.
2.3 Методы отладки
Иногда, когда программа делает что-то непредвиденное, причина достаточно очевидна, и можно быстро исправить код программы. Но другие ошибки более трудноуловимы и вызываются взаимодействие различных частей программы. В этих случаях лучше всего остановить программу в заданной точке, пройти ее шаг за шагом и просмотреть состояние переменных и выражений. Такое управляемое выполнение – ключевой элемент отладки.
2.3.1 Установка точки прерывания
Точка прерывания позволяет остановить выполнение программы перед любой выполняемой инструкцией (оператором) с тем, чтобы продолжать выполнение программы либо в пошаговом режиме, либо в непрерывном режиме до следующей точки прерывания.
Чтобы задать точку прерывания перед некоторым оператором, необходимо установить перед ним текстовый курсор и нажать клавишу F9 или кликнуть мышью на левом боковом поле окна редактирования напротив оператора. Точка прерывания обозначается в виде красного кружка на левом поле окна редактирования (см. рисунок 10.2). Повторное действие (щелчок на указанной кнопке или нажатие F9) снимает точку прерывания. В программе может быть несколько точек прерывания.
Для просмотра всех точек остановки необходимо выбрать пункт Debug | Windows | Breakpoints или нажать комбинацию клавиш Ctrl+Alt+B.
Рисунок 10.2 – Окно редактора с установленной точкой прерывания
2.3.2 Выполнение программы до точки прерывания
Программа запускается в отладочном режиме с помощью команды Debug | Start Debugging (или нажатием клавиши F5).
В результате код программы выполняется до строки, на которой установлена точка прерывания. Затем программа останавливается и отображает в окне Editor ту часть кода, где находится точка прерывания, причем желтая стрелка на левом поле указывает на строку (см. рисунок 10.2), которая будет выполняться на следующем шаге отладки.
2.3.3 Прекращение отладки
В ходе сеанса отладки иногда желательно начать все сначала. Выбор команды Debug | Stop Debugging или нажатие клавиши Shift+F5 приведет к полному сбросу, так что выполнение по шагам, или трассировка прекратится.
