Система программирования Turbo Pascal



                  


Диалоговое окно опции Debug/Evaluate/Modify



Рис.П1.7. Диалоговое окно опции Debug/Evaluate/Modify

В первом поле следует ввести имя любой переменной или некоторое выражение. Сразу после того, как Вы нажмете Enter, в поле RESULT появится соответствующее значение или сообщение Unknown identifier (неопределенный идентификатор), если такая переменная не определена в Вашей программе. К моменту вызова опции программа должна находиться в режиме отладки, в противном случае это сообщение будет даваться для любых переменных и выражений с их участием.

Если Вы запросили значение переменной, Вы можете перевести курсор в нижнее поле NEW VALUE и установить новое значение переменной - это значение будет немедленно передано в программу.

При обращении к опции среда анализирует ближайшее окружение курсора в активном окне редактора и, если это возможно, выделяет идентификатор или константу, на которую указывает курсор. Выделенное автоматически переносится в поле EXPRESSION и предлагается в виде вычисляемого выражения. Таким образом, если перед вызовом этой опции установить курсор на интересующий Вас идентификатор, останется лишь нажать на Enter, чтобы тут же получить его значение в поле RESULT. Если предлагаемый идентификатор Вас не устраивает, можно его отредактировать или ввести новый. Для ввода нового нажмите на любую алфавитно-цифровую клавишу, и предлагаемый в окне идентификатор исчезнет, заменившись вновь введенным символом. Для перехода к редактированию предлагаемого идентификатора следует сразу же после появления окна нажать Ноте или End, затем перевести курсор к нужному месту идентификатора и отредактировать его с использованием клавиш Ins, Del и Backspace. Наконец, если сразу после вызова опции нажать End, а затем - клавишу перевода курсора вправо, появившийся в поле EXPRESSION идентификатор дополнится символом, расположенным справа от него в тексте программы. Теперь при каждом нажатии на клавишу перевода курсора вправо очередной символ из текста программы будет копироваться в поле EXPRESSION. Описанная возможность существенно облегчает ввод длинных выражений и составных идентификаторов.

Вы можете ввести (и вычислить) выражения с участием констант и переменных из Вашей программы, а также некоторых стандартных функций. Выражения составляются по правилам формирования выражений Турбо Паскаля, причем тип выражения может быть любым стандартным или определенным в программе типом. Фактически единственным ограничением на выражения является то, что в них нельзя использовать вызовы нестандартных функций (можно использовать только следующие предварительно определенные функции и константы: ABS, ADDR, CHR, DSEG, HI, IORESULT, LENGTH, LO, MAXAVAIL, MEMAVAIL, ODD, OFS, ORD, PRED, PTR, ROUND, SEG, SIZEOF, SPTR, SSEG, SUCC, SWAP, TRUNC, а также массивы MEM, MEMW и MEML).

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

MemL[$40:Q] ,h

выдаст содержимое четырех байт оперативной памяти в шестнадцатеричном формате.

Допускаются следующие ключи:

С - формат CHAR (символьный);

S - формат STRING (строковый);

D - формат целых десятичных чисел;

$, H или Х- шестнадцатеричный формат;

Fn - формат REAL (вещественный); число п определяет количество значащих цифр в выводимом результате;

М - формат копии памяти: выводится содержимое переменной побайтно, начиная с младшего байта, в шестнадцатеричном формате; если ключ указан для выражения, он игнорируется;

Р - формат POINTER (указатель); результат выводится в виде PTR(SEG,OFS), например, Ptr($3EA1,$20);

R - формат RECORD (запись); выводится в круглых скобках список полей с указанием их значений, например: (X:1;Y:10;Z:S).

Перед ключей формата можно указать целое число, которое трактуется как коэффициент повторения. Если, например, в поле EXPRESSION содержится

UserList[0], 4D

то в качестве результата будет выдано в формате целых десятичных чисел значение четырех последовательных элементов массива User-List, начиная с элемента 0, т.е. UserList[0], UserList[1] и т.д. Коэффициент повторения относится только к переменным (по отношению к выражениям он игнорируется) и его можно указывать без ключа формата. Если, например,

var

UserList array [0..20] of integer;

то обращения

UserList[0] ,4D 

UserList[0] ,4

дадут идентичные результаты.

Выражения в поле EXPRESSION можно задавать многократно, можно использовать также ранее введенные выражения из протокола опции. Для выхода из диалога используйте клавишу Esc или поля Cancel и  . при работе с мышью. Опцию можно вызвать непосредственно из редактора командой Ctrl-F4. Отметим, что эта опция может использоваться как встроенный в Турбо Паскаль калькулятор.

ADD WATCH. С помощью этой опции можно указать отладчику те переменные и/или выражения, за изменением значений которых Вы хотели бы наблюдать при отладке программы. Указанные переменные и выражения вместе с их текущими значениями будут постоянно содержаться в окне наблюдения, доступ к которому возможен с помощью клавиши F6. Если Вы сделаете активным это окно, Вы сможете перемещаться в нем, вызывая при необходимости «прокрутку» его содержимого. Таким образом можно наблюдать за произвольным количеством переменных и выражений.

Опцию можно вызвать непосредственно из редактора командой CtrI-F7. При этом справедливо все сказанное выше относительно вызова опции DEBUG/EVALUATE/MODIFY, т.е. выделение идентификатора, его редактирование и дополнение, использование коэффициента повторения и ключей формата. Сразу после добавления отслеживаемого выражения активизируется окно наблюдения.

ADD BREAKPOINT. С помощью этой опции меню DEBUG Вы можете установить в текущей строке контрольную точку. Текущая строка - это строка с курсором в окне редактора. Если для нее установлена контрольная точка, строка выделяется цветом (яркостью). В программе можно установить произвольное количество контрольных точек. После запуска программы с установленными контрольными точками (точкой) отладчик прекратит исполнение программы перед выполнением того оператора, который содержится в первой (по логике работы программы) контрольной точке. При этом на экране появится окно редактора с контрольной точкой и среда перейдет к режиму отладки программы. Если контрольная точка задана для строки, не содержащей исполняемого оператора (например, для строки со словом BEGIN), программа остановится перед первым после этой строки исполняемым оператором. Останов в контрольной точке можно сделать условным. Однажды установленная контрольная точка действует на каждое очередное обращение к соответствующей строке программы.

В диалоговом окне опции поле Condition задает условие останова. Это может быть произвольное логическое выражение с использованием любых переменных, констант, вызовов функций. Если к моменту исполнения оператора с контрольной точкой это выражение имеет значение TRUE, произойдет останов прогона и среда перейдет к режиму отладки. Поле Pass count указывает количество обращений к оператору с контрольной точкой, после которого произойдет останов.

С помощью команды Ctrl-F8 контрольную точку можно установить/снять непосредственно из режима редактирования.



Содержание  Назад  Вперед