 |
Команда Watch...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Команда Watch (Просмотр) выводит подсказку для ввода имени
переменной или выражения, чтобы добавить его к списку окна
Watches (оно добавляется в конец списка).
Команда Edit...
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Команда Edit (Редактирование) позволяет редактировать выра-
жение в окне Watches (Просмотр). Вы можете изменять то, что там
находится или вводить новое значение.
Вы можете также вызвать эту команду, нажав клавишу Enter
после позиционирования подсветки на выражении просмотра, которое
вы хотите изменить. Для помещения редактируемого выражения в окно
просмотра нажмите Enter или выберите "кнопку" OK.
Команда Remove
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
TDeb 3.0 #1-3 = 149 =
Команда Remove (Удаление) удаляет из окна Watches текущую
выбранную запись.
Команда Delete All
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Команда Delete All (Удалить все) удаляет из окна Watches
(Просмотр) все записи. Эту команду полезно использовать, если вы
переходите от одной области вашей программы к другой, и перемен-
ные, наблюдаемые ранее, вам больше не нужны.
Команда Inspect
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Команда Inspect (Проверка) открывает окно проверки (окно
Inspector), в котором выводится содержимое подсвеченной в данный
момент в окне Watches записи. Если эта запись представляет собой
сложный объект (массив, структуру или запись), то это позволяет
вам просмотреть все ее элементы, а не только те, которые выводят-
ся в окне Watches (Просмотр). (Более подробно об окне Inspector
рассказывается далее.)
Команда Change
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Команда Change (Изменение) изменяет значение подсвеченной в
данный момент записи в окне Watches (Просмотр) на значение, кото-
рое вы вводите в ответ на подсказку. Если это допускается в ис-
пользуемом языке, Турбо отладчик выполняет все необходимые преоб-
разования типов, как это делалось бы в соответствующем операторе
присваивания (= или :=). Более подробно об операции присваивания
и преобразовании (приведении) типов рассказывается в Главе 9.
Окна Inspector
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
В окне Inspector (Проверка) выводятся соответствующим обра-
зом (в зависимости от типа проверяемых данных) данные программы.
Для скалярных значений (например, char или int), указателей (char
* в Cи, ^ в Паскале), массивов (long x4[], array [1..10] of
words), функций, структур, записей, объединений и множеств окна
проверки ведут себя по-разному.
В окне Inspector выводится список элементов, входящих в исс-
ледуемый объект данных. В заголовке окна выводится тип проверяе-
мых данных и их имя, если оно имеется.
Первый элемент в окне Inspector всегда представляет собой
адрес памяти проверяемого элемента данных, выраженный в виде
"сегмент:смещение" (если он не оптимизирован к регистру или не
представляет собой константу, например, 3).
TDeb 3.0 #1-3 = 150 =
Чтобы анализировать содержимое окна Inspector (Просмотр) в
виде непосредственных байт данных, будучи в окне Inspector выбе-
рите команду ViewіDump (ОбзоріДамп). При этом появится окно Dump
(Дамп) с областью данных, позиционированной на данные, выведенные
в окне Inspector. Вы можете вернуться в окно Inspector, выбрав
окно с помощью команды WindowіClose (ОкноіЗакрытие) или клавиш
Alt-F3, либо закрыв окно с помощью кнопки "мыши".
В следующем разделе описываются различные окна Inspector,
которые могут выводиться для каждого из поддерживаемых Турбо от-
ладчиком языков (Си, Паскаля или Ассемблера). Формат информации,
выводимой в окнах проверки, зависит от используемого языка. Эле-
менты данных и из значения всегда выводятся в формате, аналогич-
ном тому, как они описываются в исходном файле.
Учтите, что для вывода различных окон Inspector вам не нужно
делать ничего особенного. Они выводятся автоматически, в зависи-
мости от типа проверяемых вами данных.
TDeb 3.0 #1-3 = 151 =
Окна Inspector языка Си
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Далее следует описание содержимого окон.
Скалярные величины
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Скалярное окно Inspector (Проверка) позволяет вам увидеть
значение простых элементов данных, таких, как:
char x = 4;
unsigned long y = 123456L;
В этих окнах Inspector содержится только одна строка инфор-
мации, следующая за верхней строкой, где описывается адрес пере-
менной. Слева выводится тип скалярной переменной (char, unsigned
long и т.д.), а справа - ее значение в данный момент. Значение
может выводиться в десятичном, шестнадцатиричном или обоих видах.
Оно обычно выводится сначала в десятичном виде, а шестнадцатирич-
ное значение указывается в скобках (с помощью стандартного шест-
надцатиричного префикса Си Ox). Для изменения вида вывода можно
использовать программу TDINST.
Если выводится переменная символьного типа (char), то показы-
вается также ее символьный эквивалент. Если данное значение не
имеет эквивалента в виде печатаемого символа, то для вывода сим-
вольного значения используйте обратную косую черту (\), за кото-
рой следует шестнадцатиричное значение. Символьное значение выво-
дится перед десятичным или шестнадцатиричным значением.
Й[*]НInspecting wordcountНННН3Н[ ][ ]Н»
є05A51:AA00 є
єunsigned±int±±±±±±±±2±±(Ox02)±±±±±±±±є
И<І°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°>Ѕ
Рис. 6.3 Cкалярное окно Inspector языка Си
Указатели
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Окно Inspector (Проверка) для указателей показывает значение
элементов данных, которые ссылаются на другие элементы данных,
например:
char *p = "abs";
int *ip = 0;
int **ip = &ip;
Обычно окно Inspector для указателей содержит только одну
строку информации, следующую за верхней строкой, в которой описы-
вается адрес переменной. Слева выводится [0], показывающий первый
TDeb 3.0 #1-3 = 152 =
элемент массива. Справа выводится значение элемента, на который
делается ссылка. Если значение представляет собой сложный элемент
данных (например, структуру или массив), то выводится максимально
возможное число элементов данных, а значения заключаются в фигур-
ные скобки ({ и }).
Если указатель типа char и ссылается на завершающуюся нуле-
вым символом символьную строку, то появляется больше информации
(показывается значение каждого элемента символьного массива).
Слева от каждой строки указывается индекс массива ([1], [2] и
т.д.), а справа выводится значение (так же, как в скалярном окне
Inspector). В этом случае в верхней строке выводится также вся
строка, а также адрес переменной и адрес строки, на которую она
ссылается.
Й[*]НInspecting bufpННННННН3ННН[ ][ ]НННН»
єregister±±ds:0874±[TCDEMO±buffer]±±±±±±±^
є[0] 'n' 110 (Ox88) ±
є[1] '0' 111 (Ox6F) °
є[2] 'w' 119 (Ox77) °
є[3] '\x00' 0 (Ox00) v
є<І°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°>є
єchar * є
ИННННННННННННННННННННННННННННННННННННННННЅ
Рис. 6.4 Окно Inspector для указателей (для языка Си)
Если вы откроете локальное окно Inspector (Проверка) и ис-
пользуете команду локального меню Range (Диапазон), то также по-
лучите несколько строк. Этот метод важен для программистов, рабо-
тающих на языке Си, которые используют указатели, ссылающиеся на
массивы, как отдельные элементы. Например, если в вашей программе
содержится:
int array[10];
int *arrayp = array;
|