Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РАБ_C++BUILDER.doc
Скачиваний:
100
Добавлен:
02.06.2015
Размер:
7.07 Mб
Скачать

Окно оценки и модификации Оценить|Изменить

Это окно позволяет в процессе отладки не только наблюдать, но и изменять значения переменных. Сделать это окно видимым можно командой Запуск|Оценить|Изменить или командой Отладка|Оценка|Изменение, которую выбирают из контекстного меню, всплывающего при щелчке правой кнопкой в окне Редактора Кода. В окне Выражение можно ввести имя переменной или выражение. Щелкнув на кнопке Оценка, увидим в окне Результат значение этого выражения. Если же в окне Выражение указать имя переменной, а не выражение, то становится доступной кнопка Изменение, позволяющая изменить значение переменной. Следовательно, имеется возможность вмешиваться в процесс выполнения приложения и насильственно изменять значения переменных.

Итак, в окне Выражение укажем имя переменной A, щелкнем на кнопке Оценка и в окне Результат увидим ее значение. В окне Новое значение напишем A/2e300 и щелкнем на кнопке Изменение. В результате значение переменной в приложении изменится, что видно в окне Результат (50000000). Перейдя в окно наблюдения (кнопка Часы), там также увидим измененное значение (A:50000000). Поскольку значение A было резко уменьшено, можно продолжить выполнение приложения. Нажав F9, убедимся, что ошибка переполнения появилась вновь.

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

Пошаговое выполнение приложения

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

Команда

«Горячие»

клавиши

Пояснения

Через шаг

F8

Пошаговое выполнение строк программы, считая вызов функции за одну строку, т.е. вход в функции не производится

След в

F7

Пошаговое выполнение программы с заходом в вызываемые функции

Шаг на следу-ющую линию

Shift+F7

Переход к следующей исполняемой строке

Выполнить до курсора

F4

Команда выполняет программу до того выполняемого оператора, на котором рас-

положен курсор в окне редактора кода

Выполнить до возвращения

Shift+F8

Выполнение программы до выхода из текущей функции, останов на операторе, следующем за вызовом этой функции

Показать точку выполнения

Команда помещает курсор на операторе, который будет выполняться следующим

Испытаем команды на рассматриваемом примере. Выведем переменную A и выражение Form1->Label1->Caption в окно наблюдения Список часов. Это окно можно встроить в Инспектор Объектов. В режиме проектирования окно наблюдения будет храниться на отдельной странице позади Инспектора Объектов, а во время выполнения приложения страницы Инспектора Объектов будут исчезать, и при остановах можно наблюдать в окне наблюдения значения переменных. Для этого надо сохранить описанную (или любую другую) конфигурацию отладочных окон с помощью команды Вид|Рабочие столы|Сохранить рабочий стол и затем командой Вид|Рабочие столы|Настройка отладки рабочего стола задать эту конфигурацию как отладочную. Проще осуществлять подобные операции с конфигурациями соответствующими быстрыми кнопками вверху окна ИСР.

Выведя переменную и выражение в окно наблюдения Список часов и встроив это окно в Инспектор Объектов, перейдем в код и откомпилируем модуль (Alt+F9). Поместим курсор на строке с оператором A*=10000; Теперь нажмем F4, чтобы приложение выполнялось до строки с курсором. Приложение начнет выполняться. Нажмем в нем кнопку. Перейдем в Редактор Кода. В нем будет выделена строка, на которой стоял курсор перед выполнением. Теперь, нажимая F7 или F8 (в данном случае все равно), выполняем операторы по шагам, а в окне наблюдений следим за изменением переменной и выражения.

Через несколько циклов переведите курсор на оператор, следующий после цикла и задающий значение Label1->Caption. Нажмите F4. Тем самым отладчику указано, что ему надо без остановов выполнять приложение до строки, указанной курсором. Все оставшиеся проходы цикла будут выполнены без остановов, и программа остановится на указанной строке. Если после этого нажать клавишу F7 или F8, то результат будет различным. При нажатии F8 произойдет переход к закрывающей фигурной скобке. А при нажатии F7 сначала попадем в заголовочный файл dstring.h. В этом файле объявлены функции работы со строками типа AnsiString, к которым неявно обращается оператор программы. После нескольких нажатий F7 произойдет возврат в программу и переход к закрывающей фигурной скобке.