V. Пробный запуск программы на выполнение. Отладка и тестирование.
Чтобы запустить на выполнение программу, текст которой находится в окне редактора достаточно выбрать команду Run из одноименного меню.
Отсутствие в тексте программы синтаксических ошибок и генерация компилятором исполняемого файла программы не является гарантией отсутствия в программе семантических ошибок (ошибок времени выполнения). Причинами таких ошибок, чаще всего, являются:
- неверная логика алгоритма, положенного в основу программы;
- неверные исходные данные.
Поэтому после компиляции программы необходимо провести ее тщательное тестирование и при обнаружении ошибки отладить программу.
При отладке программы используется встроенный отладчик интегрированной среды. При отладке программы очень часто возникает потребность просмотра значения некоторых используемых переменных на определенной стадии выполнения программы. Отладчик среды позволяет делать это следующим образом: выбрать из меню Debug ► команду Watches(открыть окно просмотра). В окне Watch можно задавать некоторые объекты (переменные, структуры данных, выражения). При этом просматриваемые данные меняются, отражая текущие изменения при пошаговом выполнении программы.
Добавление объектов в окно просмотра осуществляется путем нажатия клавиш Ctrl+F7 или выбора в меню Debug команды Add Watch.
Следует заметить, что стандартное расположение окна Watch в нижней части экрана не всегда удобно, поэтому можно воспользоваться командами управления окнами (меню Window), задав размер и расположение окон по своему усмотрению. Это особенно актуально, когда программа включает в себя набор модулей и когда окна, в которых отображены тексты соответствующих модулей, перекрывают окно Watch.
Для того чтобы управлять окном, необходимо нажать клавиши Ctrl+F5, а затем использовать клавиши со стрелками, а также клавиши PageUp, PageDown (для перемещения окна по экрану) или сочетание клавиши Shift и клавиш со стрелками (для изменения размеров окна). После получения желаемых вида и расположения окна следует нажать клавишу Enter. Можно для тех же целей использовать меню Window.
Теперь рассмотрим, как можно осуществить пошаговое выполнение (трассировку) программы. Для этого можно воспользоваться командой Run► Trace Into или клавишей F7. Тем самым появляется возможность выполнить одну строку программы, затем прерваться и посмотреть на результаты.
При вызове процедуры или функции внутри пользовательской программы можно задать режим выполнения вызова как одного шага или режим трассировки этой процедуры или функции строка за строкой.
При выполнении пошаговой отладки Turbo Pascal будет иногда переключаться на экран пользователя. Это происходит тогда, когда предусматривается вывод информации на экран или требуется ввод информации. Затем выполняется возврат в интегрированную среду.
Можно управлять переключением экрана с помощью установок, выполняемых по команде Options ► Debugger ► Display Swapping.
§ Smart. Это режим по умолчанию. Переключение на экран пользователя происходит при вызове программы или в вышеупомянутой ситуации.
§ Always. Переключение на экран пользователя происходит на каждом шаге.
§ None. Переключение экранов не происходит. Интегрированная среда остается видимой все время. При выводе информации текст будет отображаться на экране среды.
Кроме того, можно установить экран вывода в отдельном окне с помощью команды Window ► Output.
Построчное выполнение программы может оказаться достаточно неудобным, когда хочется обойти циклы или другие утомительные участки программы. Кроме того, отладку программы бывает удобно начать с определенного места. В этом случае можно воспользоваться клавишей F4 или командой Run ► Go to Cursor. Можно передвинуть курсор на определенную строку программы, а затем указать отладчику на необходимость выполнения программы до достижения этой строки.
Для проверки значений переменных, структур данных и выражений в интерактивном режиме пользователь может вызвать окно Evaluate, используя клавиши Ctrl+F4 или команду Debug ► Evaluate ► Modify.
Используя окно Evaluate, можно изменить значение любой переменной, включая строки, указатели, элементы массива и поля записей. Это обеспечит простой механизм для проверки, как программа реагирует на определенную установку значений и условий.
С помощью команды Debug ► Breakpoints можно пометить строки в пользовательской программе как точки прерывания. Когда в процессе выполнения программы достигается точка прерывания, выполнение программы останавливается и отображается исходный текст. Курсор при этом оказывается на строке с точкой прерывания. После этого можно проверить значения переменных, начать трассировку или выполнить программу до другой точки прерывания. Можно в любой точке прервать выполнение программы, нажав клавиши Ctrl+Break. Произойдет остановка в следующей строке исходной программы, как если бы в этой строке была установлена точка прерывания.
Точки прерывания являются важным инструментом отладки. Точка прерывания подобна знаку остановки, введенному в программу пользователя. Когда программа встречает такую точку, она останавливает свое выполнение и ждет дальнейших отладочных инструкций. Пользователь может иметь до 16 активных точек прерывания.
После задания точек прерывания можно начать выполнение программы с помощью команды Run ► Run (Ctrl+F9). Сначала программа будет выполняться нормально, но, когда встретится точка прерывания, остановится. При этом если какие-нибудь переменные или выражения были добавлены в окно Watch, то они тоже выводятся на экран с соответствующими значениями.
Затем пользователь может использовать любой режим отладки:
§ можно осуществлять пошаговое выполнение программы, используя команды
Run► Trace Into, Step Over, Go to Cursor (F7, F8, F4);
§ можно проверить или изменить значения переменных;
можно добавить или удалить выражения из окна Watch;
§ можно назначить или удалить точки прерывания;
§ можно просмотреть выходные результаты программы, используя команду Window ► User Screen (Alt+F5);
§ можно перезапустить программу сначала (Run ► Program Reset и затем команду пошагового выполнения);
§ можно продолжить выполнение до следующей точки прерывания или до конца
программы, выполнив команду Run ► Run (Ctrl+F9).
Для удаления точки прерывания необходимо переместить курсор на данную строку и выполнить команду Debug ► Toggle Breakpoint (Ctrl+F8) еще раз. Эта команда включает или отключает точку прерывания в строке.
Пользователь может быстро находить объявления процедур или функций, даже если программа разбита на несколько модулей: для этого используется команда Search ► Find ► Procedure. Во время трассировки можно быстро вернуться обратно из вызовов процедур или функций и проверить параметры каждого вызова — с помощью команды Window ► Call ► Stack.
Если в процессе отладки программы возникает необходимость начать все сначала, то нужно выбрать команду Program reset в меню Run. Система отладки повторно инициализируется, и команда следующего шага вернет пользователя к первой строке главной программы. При этом производится закрытие всех файлов, которые были открыты программой, очистка стека всех вложенных программ, освобождение всего использованного пространства кучи.
Turbo Pascal предлагает перезапуск программы, если пользователь произвел какие-либо изменения в программе во время отладки. Например, если изменена часть программы, а затем пользователь выбирает любую команду выполнения (F7, F8, F4, Ctrl+F9 и т. д.), на экране появится сообщение «Исходный модуль модифицирован, повторить сборку? Д/Н»: Source modified, rebuild? (Y/N)
Если пользователь ответит «Y», Turbo Pascal перекомпилирует программу и возобновит отладку программы сначала. Если ответ — «N», то сеанс отладки продолжается дальше (любые изменения в программе, произведенные пользователем, не будут влиять на ее выполнение до тех пор, пока он не перекомпилирует программу).