Турбо Паскаль 7.0

Эффективность отладки возрастает при совместном использовании различных инструментальных средств среды программирования. Для использования средств отладки должны быть включены опции компилято­ра: Debug information, Local symbols и Symbol information (меню Options/ Compiler). Если опции установлены, в файл включается специальная информация, допускающая применение средств отладки. В отлаженной программе эта информация не требуется, поэтому при компиляции про­граммы как готового продукта опции отладки рекомендуется отключить. Инструментальные средства отладки доступны через меню Debug (отлад­ка), приведенное на рисунке 5.4.

Из меню Debug можно вызвать три окна: Output, Watch и Call stack, которые как объекты интерфейса подобны окну с текстом программы. Они имеют порядковый номер, их размеры и положение изменяются так же, как размеры и положение любых текстовых окон. Они приводятся в списке окон меню Windows, могут активизироваться из этого меню. Любое из этих окон закрывается клавишами Alt + F3. Отличие от текстовых окон в том, что мы не можем выполнять в них свободную запись.

Пункт User screen позволяет увидеть пользовательский экран — экран, в который выводится текстовая и графическая информация при исполне­нии программы. Естественно, такая потребность возникает часто, поэтому

Окно стека Окно отладки

Просмотр и изменение переменной

Добавить контрольные точки

Контрольные точки Окно регистров Окно программы

Пользовательский экран

Добавить в окно отладки

стоит запомнить комбинацию клавиш Alt + F5 для его быстрого вызова. Если требуется одновременно наблюдать на экране текст программы и ре­зультаты ее работы в текстовом режиме, можно открыть окно Output — окно, в которое будут выводиться результаты исполнения программы. Раз­мер окна Output можно отрегулировать клавишами перемещения курсора после нажатия Control + F5 или мышью, как описано ранее.

Окно отладки программ Watch может быть открыто пунктом меню Watch или Add watch. В каждой строчке окна может быть задана некоторая переменная или выражение. В процессе выполнения программы текущее значение заданной переменной или выражения выводится в это окно. Отлад­ка с использованием окна Watch обычно сочетается с пошаговой отладкой, когда можно проверить не только последовательность выполнения команд, но и значения величин, приводящие к такой последовательности выполне­ния. Для создания окна Watch нет необходимости вызывать пункт меню Watch. Можно просто нажать клавиши Control + F7 — и Вы получите окно Add Watch, в котором надо ввести имя переменной для вывода в окно отлад­ки. В строке для набора имени будет подсвечено то имя, на котором стоял текстовый курсор в момент нажатия клавиш Control + F7. Если Вы нажмете Enter, в окно Watch добавится набранная в окне Add Watch переменная или выражение, если начнете набор другого имени, это имя исчезнет без допол­нительных действий для удаления. Если сразу после открытия окна Add Watch нажать стрелку курсора вправо, то в окно ввода начинают вводиться символы из текста программы, следующие за курсором.

Когда окно Watch активно, в нижней строке появляются указания на наиболее актуальные действия, которые можно совершить в данном состо­янии. Подсказка напоминает Вам, что пошаговая отладка проводится по нажатию клавиш F7 или F8, предлагает нажать Insert для добавления но­вой переменной в окно, Delete для удаления записи, Enter для редактиро­вания записи, на которой стоит курсор окна отладки.

Загрузим, например, программу определения наибольшего общего дели­теля. Откроем окно Output для диалога в процессе выполнения программы. Откроем окно Watch и поместим в него все три переменные нашей про­граммы: Common, First и Second. При пошаговой отладке программы по кла­више F7 мы увидим, что до исполнения программы переменные не опреде­лены. По мере ввода чисел переменные First и Second получают введенные значения. В начале цикла получает значение и переменная Common, которая изменяется при каждом прохождении цикла. Вы также увидите, что строка

if (First mod Common) = 0 then begin WriteLn('HCVl = ', Common); Break end

бывает подсвечена очень редко, так как для большинства чисел предыду­щий оператор continue завершает данный проход цикла, и эта строка дей­ствительно не выполняется.

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

Контрольная точка — это логическое условие, которое вычисляется каждый раз при выполнении заданной строки программы. Если выпол­няются условия прерывания, программа останавливается в контрольной точке. Далее мы можем вводить другие контрольные точки или применять пошаговую отладку с просмотром в окне Watch.

Чтобы добавить контрольную точку в программу, надо ввести имя фай­ла, номер строки, в которой производится проверка, логическое условие, по достижению которого происходит остановка программы, и число проходов заданной строки, в которых данное логическое условие не просчитывается. Если логическое условие не задано, остановка возникает по достижению данной строки. Число проходов данной строки без анализа по умолчанию устанавливается равным 0, то есть анализ проводится, начиная с первого прохода. Предположим, в программе определения наибольшего общего де­лителя Common.pas мы хотим проверить отношения, возникающие при кратности переменных Second и Common. Тогда в окне Add Breakpoint в по­ле Condition мы вводим условие прерывания программы Second mod Com­mon = 0. В поле FileName автоматически вносится имя файла, активного окна, а в поле Line number — номер строки, в которой находится курсор. В строку Pass count записывается число 0, так как мы хотим остановить про­грамму уже при первом выполнении условия прерывания .

Все введенные в программу точки прерывания можно просмотреть и отредактировать в окне Breakpoints

Окно, открывающееся при выборе пункта меню Evaluate/Modify, так­же, как окно Watch, позволяет просмотреть значение любой переменной или выражения, но при этом можно изменить значение переменной. Окно Evaluate/Modify может быть вызвано, если выполнение программы остановлено через механизм точки прерываний или при пошаговой отладке, и должно быть закрыто для продолжения работы программы . Это окно удобно использовать как «калькулятор». Для выполнения вспомога­тельных вычислений достаточно ввести соответствующее выражение в по­ле Expression и прочитать результат в поле Result.


Страница: