Ошибки этапа выполнения
Ошибки этапа выполнения или семантические ошибки происходят, когда после компиляции полной программы, при ее выполнении делается что-то недопустимое. То есть, программа содержит допустимые операторы Паскаля, но при выполнении операторов что-то происходит неверно. Например, программа может пытаться выполнить деление на ноль или открыть для ввода несуществующий файл.
Когда программа Turbo Pascal обнаруживает такую ошибку, она завершает выполнение и выводит сообщение следующего вида:
Run-time error ## at seg:ofs
Если выполнять программу вне IDE, то можно запустить IDE и для поиска вызвавшего ошибку оператора использовать команду Search|Find Error, которая дает адрес сегмента и смещения (seg:ofs).
Логические ошибки
Логические ошибки – это ошибки проектирования и реализации программы. То есть, все операторы допустимы и что-то делают, но не то, что предполагалось. Эти ошибки часто трудно отследить, поскольку IDE не может найти их автоматически, как синтаксические и семантические ошибки. Тем не менее, IDE включает в себя средства отладки, помогающие найти логические ошибки.
Логические ошибки приводят к некорректному или непредвиденному значению переменных, неправильному виду графических изображений или невыполнению кода, когда это ожидается. Далее рассматриваются методы отслеживания этих логических ошибок.
Выполнение программы по шагам и трассировка
Методы отладки
Иногда, когда программа делает что-то непредвиденное, причина достаточно очевидна, и можно быстро исправить код программы. Но другие ошибки более трудноуловимы и вызываются взаимодействие различных частей программы. В этих случаях лучше всего остановить программу в заданной точке, пройти ее шаг за шагом и просмотреть состояние переменных и выражений. Такое управляемое выполнение - ключевой элемент отладки.
Выполнение по шагам и трассировка
Команды выполнения по шагам Step Over и трассировки Trace Into меню Run дают возможность построчного выполнения программы. Единственное отличие выполнения по шагам и трассировки состоит в том, как они работают с вызовами процедур и функций.
Выполнение по шагам вызова процедуры или функции интерпретирует вызов как простой оператор и после завершения подпрограммы возвращает управление на следующую строку. Трассировка подпрограммы загружает код этой подпрограммы и продолжает ее построчное выполнение.
Дата добавления: 2016-02-02; просмотров: 629;