Break; // Выход с последним найденным фикс. диском

}

a="";

for(int i=0; i<num_disk;i++)

{ if(DiskFree(i+3)/(1024*1024)>1000) // В мегабайтах

{ a="aa"; // Взведение флага, если свободно

// более 1 гигабайта

break;

}

}

if(a!="aa")

{ a=”На дисках недостаточно свободного места. \n”;

”Всего на жестких дисках свободно: \n ”;

for(int i=0; i<num_disk;i++)

{ AnsiString b; // Формирование сообщения C:\ - XXX MB

b.sprintf("%c:\\ - ",i+'c'); // D:\ - YYY MB

// и так далее

a+=b+AnsiString(DiskFree(i+3)/(1024*1024)).c_str()+" МB\n";

}

Application->MessageBox(a.c_str(),”Системные требования”,MB_OK);

}

//============================================================

 

Приведенные примеры, конечно, не охватывают все системные параметры, которые можно выяснить из программы пользователя. Здесь показано, как используя функции API Win32 и C++ Builder, можно определить такие важные для прикладной программы параметры, как наличный объем оперативной и дисковой памяти, параметры процессора и наличие мыши.

 

3.6 Вопросы для самопроверки

1. Как определить из программы пользователя номер версии операционной системы?

2. Что необходимо сделать перед вызовом функции API GetVersionEX?

3. Что возвращает функция API GetVersionEX при завершении ее с ошибкой?

4. Как узнать, с какой именно ошибкой завершилась функция API GetVersionEX?

5. Что такое старшая часть версии операционной системы?

6. Что такое младшая часть версии операционной системы?

7. Что такое номер сборки операционной системы?

8. Что такое платформа операционной системы?

9. Как определить из программы пользователя наличие мыши в системе?

10. Какие системные параметры возвращает функция API GetSystemMetrics?

11. Как определить тактовую частоту процессора из программы пользователя?

12. Как в программе пользователя предотвратить вывод сообщений об общесистемных исключениях?

13. Как из программы пользователя определить доступный объем оперативной памяти системы?

14. Как из программы пользователя определить процент использования памяти в системе?

15. Как из программы пользователя определить доступный для использования объем файла подкачки?

16. Как из программы пользователя определить доступный объем дискового пространства?

17. Как из программы пользователя определить наличие и количество имеющихся логических дисков?

18. Как из программы пользователя определить тип конкретного логического диска?

19. Какого типа диски позволяет определить функция API GetDriveType?

20. Как определить наличие свободного дискового пространства на каждом конкретном диске системы?

21. Как определить общий объем свободного дискового пространства в системе?

22. В каких операционных системах функция API GetDiskFreeSpace дает корректную информацию о томах, объемом более 2 гигабайт?

23. Какие функции имеются в составе пакета Builder C++ для определения наличного свободного дискового пространства?

24. Что возвращает функция Builder C++ DiskFree при указании неверного номера запрашиваемого диска?


4 Отладка и тестирование программ

Турбо дебаггер (Turbo Debugger) – это отладчик, позволяющий отлаживать программы на уровне исходного текста. Многочисленные перекрывающие друг друга окна, а также сочетание выпадающих и раскрывающихся меню обеспечивают удобный пользовательский интерфейс. Интерактивная, контекстно-зависимая система подсказки обеспечит вас подсказкой на всех стадиях работы.

Ниже перечислены некоторые свойства турбо дебаггера:

- использование расширенной памяти типа EMS для отладки больших программ;

- вычисление любых выражений языка Си, C++, Паскаль и Ассемблера;

- настраиваемое размещение информации на экране;

- доступ к Ассемблеру и процессору по мере необходимости;

- мощные средства использования точек останова и протокола регистрации;

- запись нажатий клавиш (макрокоманды);

- средства обратной трассировки отлаживаемой программы;

- использование удаленной системы для отладки больших программ;

- поддержка процессора 80386 и аппаратных отладчиков прочих изготовителей;

- возможности отладки резидентных в памяти программ и драйверов устройств;

- возможности отладки прикладных программ Microsoft Windows.

 


4.1 Отладка и турбо дебаггер

Отладка – это процесс нахождения и исправления ошибок в программе. Нет ничего необычного в том, что поначалу поиск и устранение ошибок занимают больше времени, чем написание программы.

Отладка не является точной наукой. Часто лучшее средство отладки находится в голове у программиста. Тем не менее, систематический метод отладки может дать некоторые преимущества.

Процесс отладки в общем случае можно разделить на четыре этапа:

1. Обнаружение ошибки.

2. Поиск ее местонахождения.

3. Определение причины ошибки.

4. Исправление ошибки.

Обнаружение ошибки

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

Нахождение ошибки

Второй этап иногда является самым трудным. Он заключается в том, чтобы найти место в программе, где находится ошибка. Просто невозможно держать в голове всю программу сразу (если эта программа не очень маленькая). Лучший подход – это "разделяй и властвуй", то есть разбивать программу на части и отлаживать их отдельно друг от друга. Структурное программирование идеально подходит для такой отладки.

Определение причины ошибки

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

Исправление ошибки

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

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

Однако есть ошибки гораздо более тонкие и коварные, чем синтаксические. Они не проявляются до тех пор, пока вы не введете отрицательное число, либо являются настолько неуловимыми, что загоняют вас в тупик. Здесь-то вам и придет на помощь турбо дебаггер.

Что может дать турбо дебаггер?

Автономный турбо дебаггер обеспечивает доступ к гораздо более мощным средствам отладки, чем те, которые имеются в самом компиляторе.

Турбо дебаггер можно использовать для отладки любой программы на языке Си или C++ для компилятора семейства Borland, Турбо Паскале, Турбо Ассемблере.

Турбо дебаггер можно использовать для решения двух труднейших проблем процесса отладки: поиска места нахождения ошибки и ее причины. Он поможет преодолеть эти трудности с помощью исключительных возможностей по замедлению выполнения программы, благодаря чему можно исследовать состояние программы в любой заданной точке. Можно даже тестировать новые значения переменных, чтобы увидеть, как они воздействуют на программу. Эти возможности реализуются с помощью трассировки, пошагового выполнения, просмотра, изменения и прослеживания.

Трассировка Позволяет выполнять программу по одному оператору.
Обратная трассировка Позволяет выполнить код в обратном порядке.
Пошаговое выполнение Позволяет выполнять программу по одному оператору, но пропускать вызовы процедур и функций. Если есть уверенность, что в процедурах и функциях нет ошибок, то пропуск их вызовов увеличит скорость отладки.
Просмотр   Позволяет запросить турбо дебаггер создать специальное окно для показа самых различных вещей – переменных, их значений, точек останова, содержимого стека, файлов регистрации, данных, файлов исходных текстов, кодов ЦП, памяти, регистров, информации процессора, арифметики с плавающей точкой, вывода программы.
Проверка Позволяет запросить у турбо дебаггера содержимое сложных структур данных из программы.
Изменение Позволяет изменить значение переменной (как локальной, так и глобальной).
Прослеживание Позволяет выделить некоторые программные переменные и прослеживать изменение их значений в процессе работы программы.

 

Эти средства можно использовать для разделения программы на некоторые фрагменты, проверять работоспособность которых можно поочередно. Таким образом можно просмотреть всю программу, независимо от ее величины и сложности, и найти ошибку. Может быть, найдется функция, которая неверно изменяет значение переменной, или неправильная рекурсия, или попадание программы в бесконечный цикл. В любом случае турбо дебаггер помогает найти и определить тип ошибки.

Что турбо дебаггер не сможет сделать

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

- Он не имеет встроенного редактора текстов для изменения исходной программы. Большинство программистов имеет свои излюбленные редакторы, и вполне довольны ими. Было бы расточительством памяти включать какой-либо редактор в турбо дебаггер. Однако вы можете легко передать управление вашему текстовому редактору, выбрав глобальную команду Edit (Редактирование) окна File (Файл) (о локальных командах рассказывается далее). Турбо дебаггер использует редактор, который задается с помощью программы установки TDINST.

- Турбо дебаггер не может перекомпилировать вашу программу. Для этого необходим соответствующий компилятор.

- Турбо дебаггер не сможет заменить процесс обдумывания. Во время отладки вашим главным инструментом является мысль. Турбо дебаггер является мощным средством, но при отсутствии ее, он не экономит ни времени, ни усилий.

4.2 Меню и диалоговые окна

В турбо дебаггере, как и во многих продуктах фирмы Borland, используются удобная система глобальных меню, доступных из строки меню, выводимой в верхней части экрана. За исключением того момента, когда активно диалоговое окно, система меню всегда доступна.

Главное меню

Главное меню доступно всегда, независимо от того, какое окно активно (т.е. в каком окне находится курсор).

Для каждого пункта (команды) главного меню имеется выпадающее меню. С помощью выпадающего меню можно:

- Выполнить команду.

- Открыть всплывающее меню. Это меню выводится после выбора элемента меню, за которым следует отметка (>).

- Открыть диалоговое окно. Это окно открывается, когда вы выбираете элемент меню, за которым следует многоточие (...).

Использование меню

Существует 4 способа выбора пунктов из главного меню:

- Нажать F10, подвести курсор к требуемому элементу меню и нажать клавишу Enter.

- Нажать клавишу F10 и клавишу с первой буквой элемента меню (F, V, R, B, D, O, W, H).

- Нажать клавишу Alt одновременно с первой клавишей пункта (элемента) меню (F, V, R, B, D, O, W, H) для активизации выбранного меню команд. Например, в любом месте системы нажатие клавиш Alt-F переместит вас в меню File (Файл). Системное меню будет открыто при нажатии клавиш Alt-пробел.

- Выбрать элемент (пункт) меню с помощью манипулятора типа "мышь" и нажать кнопку.

Для перемещения по всем меню, кроме главного, используйте следующие клавиши:

o стрелки вправо/влево – для перемещения от одного выпадающего меню к другому (например, когда вы находитесь в меню File, нажатие стрелки влево переместит вас в меню View),

o стрелки вверх и вниз – для перемещения по командам конкретного меню,

o клавиши Home и End для перемещения к первой и последней альтернативам (командам) меню, соответственно.

Для перемещения в меню или диалоговое окно более низкого уровня (всплывающее меню) используется клавиша Enter.

С этой же целью можно щелкнуть левой кнопкой мыши на нужной команде.

Выйти из меню или системы меню можно следующим образом:

- Нажать клавишу Esc для выхода из меню и возврата в предыдущее меню.

- Нажать клавишу Esc – если вы находитесь в меню второго уровня, это позволяет выйти из системного меню и возвратиться в предыдущее активное окно.

- F10 для возврата из меню любого уровня в предыдущее активное окно.

- Щелкнуть на активном окне левой кнопкой мыши для выхода из системы меню и возврата в это окно.

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

Таблица 4.1 – Функциональные клавиши и соответствующие команды

Клавиша Команда меню Функция
F1   Выводит на экран контекстно-зависимую справочную информацию
F2 Breakpoints / Toggle (Точки останова / переключение) Устанавивает в позиции курсора точку останова
F3 View/Module (Обзор / Модуль) Выводит список для выбора модуля
F4 Run / Go to Cursor (Выполнение / Переход к курсору) Выполняет программу до позиции курсора
F5 Window / Zoom (Окно / Переключение) Переключает текущее окно
F6 Window / Next Window (Окно / Следующее окно) Выполняет переход к следующему окну
F7 Run / Trace Into (Выполнение / Трассировка вглубь) Выполняет одну исходную строку или инструкцию
F8 Run / Step Over (Выполнение / Шаг) Выполняет одну исходную строку или инструкцию, пропуская вызовы
F9 Run / Run (Выполнение / Выполнение) Выполняет программу
F10   Активизирует основное меню
Alt-F1 Help / Previous Topic (Справка / Предыдущая тема) Выводит последний экран со справочной информацией

 

Alt-F2 Breakpoints / At (Точка останова / На …) Устанавливает точку останова по заданному адресу
Alt-F3 Window / Close (Окно / Закрытие) Закрывает текущее окно
Alt-F4 Run / Back Trace (Выполнение / Обратная трассировка) Выполняет программу «в обратном направлении»
Alt-F5 Window / User Screen (Окно / Экран пользователя) Показывает экран вывода программы
Alt-F6 Window / Undo Close (Окно / Отменить закрытие) Вновь открывает последнее закрытое окно
Alt-F7 Run / Instruction trace (Выполнение / Трассировка инструкции) Выполняет одну инструкцию
Alt-F8 Run / Until Return (Выполнение / До возврата) Выполняет программу до возврата управления из функции
Alt-F9 Run / Execute To (Выполнение / Выполнение до …) Выполняет программу до заданного адреса
Alt-F10   Вызывает локальное меню окна
Alt-1¸9   Переводит в окно заданным номером
Alt-Пробел   Активизирует системное меню
Alt-B   Активизирует меню Breakpoints (Точки останова)
Alt-D   Активизирует меню Data (Данные)
Alt-F   Активизирует меню File (Файл)
Alt-H   Активизирует меню Help (Справка)
Alt-O   Активизирует меню Options (Параметры)
Alt-R   Активизирует меню Run (Выполнение)
Alt-V   Активизирует меню View (Обзор)
Alt-W   Активизирует меню Window (Окно)
Alt-X   Выполняет выход из турбо дебаггера и возврат в DOS

 

Alt-= Options / Macros / Create (Параметры / Макрокоманды / Создание) Определяет клавиатурнную макрокоманду
Alt-Минус Options / Macros / Stop Recording (Паоаметры / Макрокоманды / Остановить запись) Завершает запись макрокоманды
Ctrl-F2 Run / Program Reset (Выполнение / Сброс программы) Останавливает сеанс отладки и сбрасывает состояние программы для повторного выполнения
Ctrl-F4 Data / Evaluate (Данные / Вычисления) Вычисляет выражение
Ctrl-F5 Window / Size, Move (Окно / Размер, перемещение) Инициализирует перемещение или изменение размера окна
Ctrl-F7 Data / Add Watch (Данные / Добавить выражение) Добавляет переменную в окно просмотра (Watch)
Ctrl-F8 Breakpoints / Toggle (Точка останова / Переключение) Переключает состояние точки останова в месте расположения курсора
Ctrl-F9 Run / Run (Выполнение / Выполнение) Запускает программу на выполнение
Ctrl-F10   Вызывает локальное меню окна
Ctrl-®   Сдвигает начальный адрес в области кода, данных или стека окга CPU (ЦП) на 1 байт вверх
Ctrl-   Сдвигает начальный адрес в области кода, данных или стека окга CPU (ЦП) на 1 байт вниз
Ctrl-A   Перемещение к предыдущему слову
Ctrl-C   Прокручивает вниз на один экран
Ctrl-D   Перемещает вправо на одну позицию
Ctrl-E   Перемещает вверх на одну позицию
Ctrl-F   Перемещает к следующему слову
Ctrl-R   Прокручивает вверх на один экран
Ctrl-S   Перемещает влево на одну позицию
Ctrl-X   Перемещает вниз на одну строку
Shift-F1 Help / Index Переход к оглавлению оперативного справочника
Shift-Tab   Перевод курсора в предыдущую область окна или элемент
Shift-®   Перемещение курсора между областями в окне в соответствии с направление стрелок (область в направлении стрелки становится текущей областью)
Shift-  
Shift-¯  
Shift-­  
Esc   Закрытие окна проверки (Inspector), выход из меню
Ins   Начало выбрки блока текста (подсветка)
Tab Window / Next Pane (Окно / Следующая область) Перемещение курсорак следующей области окна или к следующему элементу диалогового окна

 

Для того, чтобы вызвать основное меню (строку меню) следует нажать клавишу F10. Для перехода в один из пунктов основного меню следует:

- переместив курсор на заголовок меню, нажать клавишу Enter,

- нажать первую букву подсвеченного элемента (пункта) меню.

Кроме того, можно непосредственно открыть меню (не перемещаясь сначала к заголовку меню), нажав клавишу Alt в сочетании с первой буквой имени нужного меню.

На рисунке 4.2 показано основное (системное меню).

Рисунок 4.2 – Основное (системное) меню

На рисунке 4.3 показано меню File (Файл).

Рисунок 4.3 – Меню File (Файл)

На рисунке 4.4 показано меню Edit (Редактирование). На рисунках 4.5 – 4.11 – меню View (Обзор), Run (Выполнение), Breakpoints (Точки останова), Data (Данные), Options (Параметры), Window (Окно) и Help (Справка), соответственно.

Рисунок 4.4 – Меню Edit (Редактирование)

 

Рисунок 4.5 – Меню View (Обзор)

Рисунок 4.6 – Меню Run (Выполнение)

Рисунок 4.7 – Меню Breakpoints (Точки останова)

 

Рисунок 4.8 – Меню Data (Данные)

 

Рисунок 4.9 – Меню Options (Параметры)

 

Рисунок 4.10 – Меню Window (Окно)

 

Рисунок 4.11 – Меню Help (Справка)

Для понимания этих возможностей следует запомнить, что турбо дебаггер является контекстно-зависимой программой. Он запоминает, какое окно открыто, какой текст выбран, и в какой части окна находится курсор. Другими словами, он точно знает, на что вы смотрите, и где находится курсор при выборе команды. Он использует эту информацию при реагировании на вашу команду. Рассмотрим пример для иллюстрации этого фундаментального вопроса.

Предположим в пользовательской программе на Ассемблере есть инструкция:

data16 dw 65535

При работе с турбо дебаггером получить информацию о переменной можно, нажав клавиши Ctrl-I (проверка). Если курсор находится под именем переменной, то будет выведено окно просмотра данных с указанием адреса переменной, ее формата и значения (рисунок 4.12).

Локальные меню

Другим аспектом контекстной зависимости турбо дебаггера является использование локальных меню (зависящих от обстоятельств). Локальные меню в турбо дебаггере настроены на конкретное активные окно или область. Очень важно не путать локальные меню с глобальными (однако при реальной работе в отладчике оба типа меню никогда одновременно не выводятся). На рисунке 4.13 показана работа с локальным меню окна CPU.

Рисунок 4.12 – Просмотр переменной с помощью контекстно-зависимой команды Ctrl-I

Рисунок 4.13 – Глобальное и локальные меню

Содержимое локального меню может изменяться (важно знать, что локальные команды появляются почти во всех локальных меню, так что множества команд каждого меню предсказуемо), но даже в этих случаях результат команд с одинаковыми именами может быть различным в зависимости от контекста.

Каждая команда локального меню имеет функциональный эквивалент, состоящий из нажатия клавиши Ctrl, плюс первой буквы команды. Вследствие этого функциональный эквивалент, например, Ctrl-S, может означать в одном контексте одно, а в другом контексте – совершенно другое, однако существует соответствие множества команд в последовательности локальных всплывающих меню. Например, команды Goto (Переход) или Search (Поиск) всегда делают одно и то же, даже вызванные из разных мест.

4.3 Команды локальных меню

Для текущего окна вызвать всплывающее или "локальное" меню можно с помощью клавиш Alt-F10. Если разрешено использовать сокращения с клавишей Ctrl (разрешить это можно с помощью программы установки TDINST), то к отдельным элементам этого меню можно обратиться непосредственно с помощью клавиши Ctrl и первой буквы нужного элемента (команды) меню (нажав их одновременно). Следует учитывать, что каждый тип окна и каждая область окна содержат разные локальные меню.

Ниже описаны локальные меню для каждого окна и области. Для удобства поиска меню в данном разделе упорядочены по алфавиту.

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

Рисунок 4.14 – Локальное меню окна Breakpoints

Локальное меню окна Breakpoints (Точки останова)

Окно Breakpoints содержит две области (рисунок 4.14): область списка (слева) и область детализации (справа). Локальное меню имеет только область списка.

В данном окне в качестве сокращения команды Remove (Удаление) используется клавиша Del.

Меню окна CPU (ЦП)

Окно CPU (Центральный процессор) имеет пять областей (область кода, область данных, область стека, область регистров и область флагов), и в каждой области имеется локальное меню.

Область кода

Вместо команды локального меню Assemble (Ассемблирование) можно использовать сокращенный вариант: набор любого символа.

Рисунок 4.15 – Локальное меню области кода окна CPU

Область данных

Рисунок 4.16 – Локальное меню области данных окна CPU

Вместо команды локального меню данной области Change (Изменение) можно использовать сокращенный вариант: набор любого символа.

Область флагов

Рисунок 4.17 – Локальное меню области флагов окна CPU

В качестве сокращений данной команды можно использовать клавиши Enter или "пробел".

Область регистров

Рисунок 4.18 – Локальное меню области регистров окна CPU


Область стека

Рисунок 4.19 – Локальное меню области стека окна CPU

Окно Dump (Дамп)

Окно Dump идентично области данных окна CPU (ЦП). Их локаль ные меню также эквивалентны.

Окно File (Файл)

В окне File (Файл) в текстовом или шестнадцатеричном виде выводится содержимое файла на диске (рисунок 4.21).

Рисунок 4.20 – Локальное меню окна File (Файл)

Вместо команды локального меню Search (Поиск) можно использовать сокращенный вариант: набор любого символа.

Локальное меню окна Log (Регистрация)

Рисунок 4.21 – Локальное меню окна Log (Регистрация)

В окне Log (Регистрация) выводятся сообщения, переданные для регистрации (протокол) (рисунок 4.21).

Вместо команды локального меню Add Comment (Добавить комментарий) можно использовать сокращенный вариант: набор любого символа.

Окно Module (Модуль)

В окне Module (Модуль) выводится содержимое исходного файла программного модуля.

Окно Clipboard

В окне Clipboard выводятся все элементы, которые вы скопировали в карман. Оно имеет единственную область со следующими командами локального меню (рисунок 4.23).

Окно Numeric Processor (Сопроцессор)

Окно Numeric Processor (Арифметический сопроцессор) содержит три области: область регистров, область состояния и область управления.

Рисунок 4.22 – Локальное меню окна Module (Модуль)

Рисунок 4.23 – Локальное меню окна Clipboard

Область регистров

В качестве сокращенных вариантов команд локального меню данной области можно использовать следующие клавиши (рисунок 4.24).

Вместо команды локального меню данной области Change (Изменение) можно использовать сокращенный вариант: набор любого символа.

Рисунок 4.24 – Локальное меню области регистров окна Numeric Processor

Область состояния

В качестве сокращенного варианта данной команды локального меню можно использовать просто нажатие клавиши Enter или пробел.

Рисунок 4.25 – Локальное меню области состояния окна Numeric Processor

Область управления

В качестве сокращенного варианта данной команды локального меню можно использовать просто нажатие клавиши Enter или пробел.

Меню окна Registers (Регистры)

Окно Registers (Регистры) идентично областям регистров и флагов окна CPU (ЦП). Его локальные меню идентичны локальным меню области регистров и области флагов.

Рисунок 4.26 – Локальное меню области управления окна Numeric Processor

Окно Stack (Стек)

В области стека выводятся активные в данный момент процедуры (рисунок 4.27).

Рисунок 4.27 – Локальное меню окна Stack (Стек)

В качестве сокращенного варианта команды локального меню Inspect можно использовать просто нажатие клавиши Enter.

Окно Variables (Переменные)

Это окно разделено на две области, у каждой из которых имеется свое локальное меню: область глобальных идентификаторов и область локальных идентификаторов (рисунки 4.28 и 4.29).

Область глобальных идентификаторов

Нажатие клавиши Enter является сокращенной формой команды Inspect локального меню данной области.

Рисунок 4.28 – Локальное меню области глобальных переменных окна Variables

Область локальных идентификаторов

Рисунок 4.29 – Локальное меню области локальных переменных окна Variables

В качестве сокращенного варианта команды локального меню Inspect можно использовать просто нажатие клавиши Enter.

Окно Watches (Просмотр)

Рисунок 4.30 – Локальное меню окна Watches (Просмотр)

Окно Watches (Просмотр) содержит единственную область, в которой выводятся имена и значения просматриваемых переменных (рисунок 4.30).

 

4.4 Пример отладки простой программы

Для иллюстрации использования турбо дебаггера рассмотрим простой пример программы на ассемблере. В данном разделе рассмотрены основные средства турбо дебаггера. Пример программы называется Example.asm, и приведен ниже.