Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на Delphi. От новичка до профессионала! 18.5 Выполнение приложения по шагам


Информационный Канал Subscribe.Ru


18.5 Выполнение приложения по шагам

 

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

Для прохода фрагмента программы по шагам можно использовать команды:
 

Команда

«Горячие» клавиши

Пояснения

Step Over (По шагам без захода в ... )

F8

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

Trace Info (Трассировка с заходом в … )

F7

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

Trace to Next Source Line (Трассировка до следующей строки)

Shift+F7

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

Run to Cursor (Выполнить до курсора)

F4

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

Show Execution Point (Показать точку выполнения)

-

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

 

В процессе отладки по шагам используются уже рассмотренные возможности: ToolTip Expression Evaluation, окно наблюдения Watches, окно оценки и модификации Evaluate/Modify. Могут использоваться и некоторые другие окна, о которых будут рассказано позднее. Все эти окна встраиваемые. Этим удобно воспользоваться, встроив, например, окно наблюдения в окно Инспектора Объектов. В режиме проектирования окно наблюдения будет храниться на отдельной странице позади Инспектора Объектов, не занимая площадь экрана и нисколько не мешая работе. А во время выполнения приложения страницы Инспектора Объектов будут исчезать и при остановах вы можете наблюдать в окне Watches значения переменных. Чтобы всё это работало, надо сохранить описанную или любую другую конфигурацию отладочных окон с помощью команды View | Desktops | Save Desktop и командой Desktops | Set Debug Desktop задать эту конфигурацию как отладочную.

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

А := А * А;

Теперь нажмите F4, чтобы приложение выполнялось до тех пор, пока не дойдёт до строки, в которой стоит ваш курсор. Приложение начнёт выполняться. Нажмите в нём кнопку. Вы попадёте в окно Редактора Кода и в нём будет выделена строка, на которой стоял ваш курсор перед выполнением. Если вы не видите окно наблюдений, значит вы не выполнили рекомендаций, описанных выше в данном разделе и ранее, по сохранению и установке конфигураций. Тогда выполните, хотя бы, команду View | Debug Windows | Watches. Теперь вы можете, нажимая F7 или F8 (в данном случае это безразлично), выполнять операторы по шагам и в окне наблюдений видеть изменения переменных и выражений. Различие между F7 и F8 проявилось бы, если бы ваши операторы содержали вызов каких-то других процедур или функций, определённых в вашем модуле. В этом случае при нажатии F7 программа заходила бы внутрь этих вызываемых процедур и функций, а при нажатии F8 — не заходила бы.

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

Нажмите ещё раз клавишу F7. В Delphi 7 — 5 все будет нормально, а в Delphi 4 вы можете неожиданно в окне наблюдений в строке, соответствующей переменной Edit1.Text, увидеть текст:

Edit1.Text: Variable 'Self’ inaccessible here due to optimization
(Переменная 'Self’ недоступна в этом месте из-за оптимизации)

Подобные сообщения вы можете встречать и в других случаях отладки. Что такое переменная Self мы рассматривать не будем. Можете посмотреть о ней в справочной системе Delphi. А смысл полученного нами сообщения заключаете в том, что из-за действий оптимизатора компилятора в окне наблюдения не удаётся распознать компонент Edit1. Выход из положения во всех подобных случаях простой: надо уточнить, к какой форме относится данный компонент. Если вы опишете переменную в окне наблюдения не просто как Edit1.Text, а как Form1.Edit1.Text, то все встанет на свои места, и в окне наблюдения отобразится значение текста Edit1.


Разное:

1. Открой About box (в меню Help | About...) и нажав Alt набери слово DEVELOPERS. Ты должен увидеть список сотрудников отдела Borland R&D.
2. Открой About box и нажав Alt набери слово TEAM. Ты увидишь список всех сотрудников Borland связанных с проектом Delphi.
3. Открой About box и нажав Alt набери слово QUALITY. Увидишь список всех сотрудников отдела Quality Assurance работавших над проектом.
4. Открой About box и нажав Alt набери слово JEDI. Это дань JEDI project (Joint Endeavour of Delphi Innovators). Дополнительно, если это Пасхальное яйцо было вызвано, то About box показывает скрытую ссылку на домашнюю страничку JEDI (http://www.delphi-jedi.org).
5. Если ты будешь держать нажатыми Ctrl+Shift при старте Delphi 7, то Delphi рандомом выберет одну из фотографий "The Delphi team".
 

Сайт рассылки http://mydelphi7.narod.ru, на котором есть архив рассылки, также гостевая книга, переводчик.

Копировать, размещать, продавать представленную информацию запрещается.

 

Rambler's Top100



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное