Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Delphi.doc
Скачиваний:
67
Добавлен:
28.03.2015
Размер:
1.23 Mб
Скачать

6. Запуск программы

Запуск программы можно выполнить непосредственно из Delphi, не завершая работу со средой разработки. Для этого нужно из меню Run выбрать командуRun или щелкнуть на соответствующей кнопке панели инструментовDebug (рис. В41).

(Рис. 6.1) Запуск программы из среды разработки

При запуске, окно формы исчезает, вместо него появляется характерное Windowsприложение. Скрытие формы полезно так как при наличии и формы и запущенного приложения может сбивать с толку и приводить к путанице. При необходимости окно формы можно сделать видимым, для этого нужно перейти на окно редактора формы и нажать клавишу <F12>.С приложением можно делать все стандартные операции такие как свернуть, развернуть, переместить и т.п. После завершения работы с приложением окно формы вновь становится видимым. Окно приложения можно отличить от окна формы по отсутствию сетки, появлении приложения на панели задач и более светлому значку (иконки).

7. Отладка программы и исправление логических ошибок.

Успешное завершение процесса компиляции не означает, что в программе нет ошибок. Убедиться, что программа работает правильно можно только в процессе проверки ее работоспособности, который называется тестирование.

Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.

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

После возникновения ошибки программист может либо прервать выполнение программы, для этого надо из меню Run выбрать командуProgram Reset <F12>, либо продолжить ее выполнение, например, по шагам (для этого из менюRun надо выбрать командуStep), наблюдая результат выполнения каждой инструкции.

(Рис 7.1)

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

(Рис 7.2)

С алгоритмическими ошибками дело обстоит иначе. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако при анализе результата выясняется, что он неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную "прокручивать" его выполнение.

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

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

В случае неправильной работы программы необходимо видеть реальный порядок выполнения инструкций. Это можно сделать, выполнив трассировку программы. Трассировка— это процесс выполнения программы по шагам (step-by-step), инструкция за инструкцией. Во время трассировки программист дает команду: выполнить очередную инструкцию программы.

Delphi обеспечивает два режима трассировки: без захода в процедуру (Stepover) и с заходом в процедуру (Traceinto). Режим трассировки без захода в процедуру выполняет трассировку только главной процедуры, при этом трассировка подпрограмм не выполняется, вся подпрограмма выполняется за один шаг. В режиме трассировки с заходом в процедуру выполняется трассировка всей программы, т. е. по шагам выполняется не только главная программа, но и все подпрограммы.

Для того чтобы начать трассировку, необходимо из меню Run выбрать команду Step over или Trace into. В результате в окне редактора кода будет выделена первая инструкция программы. Для того чтобы выполнить выделенную инструкцию, необходимо из менюRun выбрать командуStep over (нажать клавишу <F8>) илиTrace into (нажать клавишу <F7>). После выполнения инструкции будет выделена следующая. Таким образом, выбирая нужную команду из менюRun, можно выполнить трассировку программы. Активизировать и выполнить трассировку можно при помощи функциональной клавиатуры. КомандеStep over соответствует клавиша <F8>, а командеTrace into — клавиша <F7>.

В любой момент времени можно завершить трассировку и продолжить выполнение программы в реальном темпе. Для этого надо из меню Run выбрать командуRun клавиша <F9>.

При необходимости выполнить трассировку части программы следует установить курсор на инструкцию программы, с которой надо начать трассировку, и из меню Run выбрать командуRun to cursor или нажать клавишу <F4>. Затем, нажимая клавишу <F7> или клавишу <F8>, выполнить трассировку нужного фрагмента программы.

Для трассировки программы используем 3 отладочных окна. Call Stack– Стек вызовов. Отображает иерархию вызовов методов, процедур и функций.Watches – Окно в котором можно отобразить значения переменной во время трассировки.Local Variables – окно отображающее все локальные переменные. Активируем несколько окон отладчика, расположенные в менюView в группе Debug Windows.

(Рис 7.3)

При нажатии на CallStackна экране появляется пустое окно с одноименным названием. Переместите его за заголовок в нижний левый угол окна редактора кода как показано на рисунке 7.6. Таким же образом добавьте окнаWatchesиLocalVariables.

(рис 7.4) Окно Call Stack

 

(Рис 7.5) Перемещение окна Call Stack

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

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

(Рис 7.6) Добавление точки останова

Для того чтобы во время выполнения программы по шагам иметь возможность контролировать значение переменной, нужно добавить имя этой переменной в список наблюдаемых элементов (WatchList). Для этого надо из менюRunвыбрать командуAddWatchили в окнеWatchesиз контекстного меню выбрать пунктAddWatch(рис 7.7) (Добавить наблюдаемый элемент) и в полеExpressionпоявившегося диалогового окнаWatchProperties(рис. 7.8) ввести имя переменной.

(Рис 7.7) Добавление наблюдаемого элемента

(Рис. 7.8) Добавление наблюдаемого элемента

В качестве наблюдаемого элемента можно указать поле объекта, например Edit1.text.

Запустите программу, заполните поля коэффициентов и нажмите на кнопку вычислить. Программа остановит свое выполнение на точке останова. Далее проведите трассировку программы. Следите за значениями в окнах отладки WatchListиLocalVariables.

(Рис 7.9) Трассировка программы

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

(Рис 7.10) Наблюдение значений переменной