- •Турбо отладчик
- •1 Вызов отладчика
- •2 Подготовка программы
- •Турбо Си
- •3 Система меню
- •4 Классификация окон
- •5 Перемещение окон
- •Информационные окна
- •6.1 Окно модулей
- •6.2 Окно обзора (наблюдений)
- •6.3 Окно ловушек
- •6.4 Окно вызовов
- •6.5 Окно сообщений
- •6.6 Окно переменных
- •6.7 Окно файлов
- •6.8 Окно процессора
- •6.9 Окно памяти
- •8 Составление выражений
- •Турбо Си
- •Турбо Паскаль
- •Турбо Ассемблер
- •Редактирование
- •9 Опции меню
- •Клавиши Функции
- •10 Главное меню
- •Локальное меню
- •Локальное меню
- •Локальное меню
- •Logging Включение/выключение регистрации сообщений Add comment Вывод указанного комментария в окно сообщений.
- •Локальное меню
- •Локальное меню
- •Локальное меню
- •Локальное меню
- •Локальное меню рамки Code
- •Локальное меню рамки Stack
- •Локальное меню рамки Data
- •Локальное меню рамки Register
6.8 Окно процессора
В окне процессора (CPU Window) высвечиваются данные о текущем состоянии процессора. Окно процессора состоит из 5 рамок, в которых находятся: код ассемблера команд программы, данные выбранной области памяти в символьном и шестнадцатеричном виде, содержимое регистров процессора, содержимое стека процессора, а также биты регистра флажков. В верхней строке окна указан тип процессора. Знак, имеющий вид стилизованной стрелки, направленной вправо, выделяет команду, которая будет выполнена следующей. В верхней строке рамки, содержащей команды, указываются адрес памяти и значения величины, находящейся по этому адресу.
6.9 Окно памяти
В окне оперативной памяти (Dump Window) высвечиваются данные, содержащиеся в выбранной области оперативной памяти. Эти данные могут быть представлены в шестнадцатеричном виде, в виде символов, слов и двух слов, а также как числа в различных представлениях. Использование локального меню позволяет модифицировать данные и перемещать блоки памяти.
6.10 Окно регистров
В окне регистров (Registers Window) высвечивается содержимое регистров процессора. Использование локального меню позволяет модифицировать содержимое регистров.
6.11 Окно сопроцессора
В окне сопроцессора (Numeric Processor Window) высвечивается содержимое регистров сопроцессора. Окно сопроцессора состоит из трех рамок, в которых находятся: содержимое регистров сопроцессора, содержимое регистра флажков сопроцессора и управляющие данные.
6.12 Выходное окно
В выходном окне (User Screen Window) высвечивается выходной экран программы. Он точно такой же, как будто активизация программы произошла в системе DOS. В целях ускоренного высвечивания этого окна можно воспользоваться клавишей AU-F5. После знакомства с экраном выхода можно высветить экран отладчика, нажав произвольную клавишу клавиатуры.
7 Инспекционные окна
Инспекционные окна служат для высвечивания информации о переменных и выражениях. Они вызываются на экран нажатием клавиши Ctrl-1. Эту
клавишу необходимо нажимать, когда курсор выделяет идентификатор переменной или когда после нажатия клавиши Ins и клавиши стрелок выделен определенный блок знаков, образующих выражение. Инспекционное окно не делится на рамки, но состоит из полей, содержащих, кроме прочего, имя переменной, ее тип, адрес, значение переменной и т. д. Если переменная является структурной, то в окне высвечиваются ее компоненты, если указательной - то высвечивается информация об указываемой переменной. Подобный способ высвечивания информации относится и к выражениям.
Перемещение между полями инспекционного окна происходит с помощью клавиши вертикальных стрелок. Если после выбора определенного поля будет снова нажата клавиша Ctrl-1, то появится инспекционное окно, касающееся выбранного компонента переменной. Очередное нажатие этой клавиши позволяет выполнить проверку компонентов более низкого уровня.
Ниже приведены примеры инспекционных окон для программ на языках Турбо Си и Турбо Паскаль.
Турбо Си
Typedef
Struct {unsigned Age;
CharName [5];
} Person, * RefPerson;
float Number = 12.4;
Int Fixed = 13;
Unsigned char Arr[2] [2] = {{1. 2}, {3. 4}};
Person Rec = {5, "Isa"};
char *Str = "Isabel";
Person People [ 'c' - 'a' + 1] =
{ {40, "Eva"],
{ 6, "Isa"},
{46. "Jan"}};
Person *Ptr;
RefPerson *RefPtr;
Int *Ref
Main ( )
{ Ptr= &Rec;
RefPtr = &Ptr;
Ref & &F1xed;
/*...*/ }
Турбо Паскаль
type
Person = record
Age: word,
Nаmе: String [5]
end;
RefPerson = Person;
const
Nunber: real = 12.4;
Fixed: Integer = 13;
Агг : array [1 .. 2, boolean] of byte =
( (1,2), (3,4));
Rec: Person = (Age: 5; Name: 'Isa');
Str: string = 'Isabel';
People: array ['a' ... c'] of Person =
((Age: 40; Name: 'Eva'),
(Age: 6; Name: 'Isa'),
(Age: 46; Name: 'Jan'));
var
Ptr: ^Person;
RefPtr: ^RefPerson;
Ref: ^Integer;
begin
Ptr: = @ Rec;
RefPtr: = @ Ptr;
Ref: = @ Fixed;
{ ... }
end.
Для того чтобы убрать с экрана последнее созданное инспекционное окно, необходимо нажать клавишу ESC. Нажатие клавиши F3 вызывает закрытие всех таких окон.
Как и другие окна, инспекционное окно имеет свое локальное меню.
Оно состоит из следующих полей:
Range
Change
Inspect
Descend
New expression...
Поле Range
Выбор поля Range позволяет определить размер высвеченных компонентов структурной переменной. Этот размер состоит из указания первого компонента и числа компонентов. Это особенно удобно в случае таблиц.
Поле Change
Выбор поля Change позволяет изменить значение переменной.
Поле Inspect
Выбор поля Inspect имеет такой же результат, как нажатие клавиши Ctrl-I, кроме того, вызывает открытие очередного инспекционного окна. Это позволяет углубиться в структуру массивов и записей, просматривать цепочку указаний и выявить развитие команд ассемблера.
Поле Descend
Выбор поля Descend имеет такой же результат, как выбор поля Inspect, вновь созданное инспекционное окно занимает место текущего инспекционного окна. Это препятствует ненужному увеличению инспекционных окон, но не позволяет проследить назад цепь указаний или вернуться на высший уровень иерархии компонентов.
Поле New expression
Выбор поля New expression позволяет задать новое значение указанному выражению. Информация о выражении помещается в текущем инспекционном окне.
