|
Учебник по Delphi
Отладка.
Обычно если пишут о какой-нибудь системе программирования, то, рассматривая
отладку программ, говорят, что система имеет невероятно мощные и удобные средства отладки.
Не хочется начинать описание отладки со стандартных слов, но именно так и придется
сделать. Потому что Delphi действительно имеет мощные и удобные средства
отладки программ. И с каждой новой версией все мощнее и удобнее.
Коснемся лишь основных инструментов отладки, так как полное описание их всех
значительно увеличит объем книги.
Самым элементарным из них является область, появляющаяся в окне редактирования
текста программы при компиляции, если были найдены какие-то ошибки.
Эти ошибки там и перечисляются.
Например, напишем такие строки и запустим компиляцию (Ctrl+F9).
Листинг 10.1
procedure Comon;
beg i n .
ShowMwssage(llpo6Hafl надпись);
end;
В данном случае имеется опечатка в вызове функции ShowMessage. В нижней области
появились следующие надписи:
[Error] Unitl.pas(26): Undeclared identifier: 'ShowMwssage'
[Fatal Error] Projectl.dpr(5): Could not compile used unit 'Unitl.pas'
Первая надпись сообщает об ошибке (Error), указывает, в каком она находится
файле (Unitl. pas) и строке (26), а также ее тип (undeclared identifier -
необъявленный идентификатор). Как видите, система не знает слова showMws sage,
не нашлось его и в описаниях переменных, типов и классов. В этом случае ошибку
нетрудно найти и исправить.
Иногда ошибка оказывается совсем не там, куда указывает Delphi. Например, если
мы объявили переменную i как string, а потом пытаемся использовать ее в цикле
for, то Delphi найдет ошибку в строке цикла for. Исправлять же ее нужно в разделе
объявления переменных — var.
Бывают и более сложные ситуации, когда ошибку приходится искать чуть ли не
полдня. При создании крупных проектов на отладку и тестирование иногда тратится
не меньше времени, чем непосредственно на программирование. Есть даже
такая должность — тестировщик. Занимающий ее человек тестирует написанное
программистами приложение.
Во второй строке (Fatal Error) компилятор сообщает, что не может скомпилировать файл Unitl .pas из-за ошибок.
Кроме ошибок в этой же области выводятся предупреждения (warning). Они в отличие
от ошибок не мешают полной компиляции проекта и созданию исполняемого
ЕХЕ-файла. Но это не значит, что на них не нужно обращать внимания.
Очень часто, анализируя предупреждения, можно понять, где в программе скрывается
ошибка, или обнаружить какие-нибудь неочевидные погрешности в коде.
Так что не стоит игнорировать предупреждения — мне они много раз помогали.
Следующим инструментом отладки является пошаговое выполнение программы.
Для его запуска нужно нажать F7. И чтобы перейти к следующей строке
программы, следует также нажимать эту клавишу. В процессе построчного выполнения
программы можно смотреть значения различных переменных. Для этого
следует подвести указатель мыши к нужной переменной в тексте программы.
На всплывающей подсказке будет написано ее значение в данный момент.
Если вам не нужно просматривать всю программу построчно, а всего лишь уточнить
какой-нибудь ее момент, то можно перейти к детальному рассмотрению определенного
фрагмента программы (как вариант — одной процедуры). Для этого
нужно нажать клавишу F4. Данный режим похож на режим трассировки (F7), но
в этом случае программа выполняется по одной строке, начиная с той, в которой
находился курсор в момент нажатия F4.
Клавишу F4 можно нажимать и тогда, когда вы запустили программу в режиме
трассировки (F7). Если нужно сразу перейти к какой-либо другой строке процедуры,
то нажмите F4. Когда выполнение программы дойдет до этой строки, оно приостановится
и будет ждать нажатия F7.
Можно назначить точку приостановки выполнения программы (точку останова).
Для этого щелкните мышью на вертикальной полосе слева в окне ввода текста программы.
Там появится красный кружок, и вся строка выделится красным цветом
. Когда вы скомпилируете программу (F9), ее выполнение приостановится
при достижении этой выделенной красным цветом строки, и вы сможете
проконтролировать, например, значения переменных.
Когда вы переходите в режим отладки Step Over (нажимаете F8), программа тоже
выполняется по шагам, но при этом не отображается выполнение процедур и фун-х
кций. Если вы точно знаете, что ошибка, допустим, не в процедуре OutGraphic, то,
достигнув строки с вызовом этой процедуры, нажимайте не F7, a F8.
В Delphi параметры отладки можно изменять в окне Debugger Options,
которое вызывается командой Tools > Debugger Options. Например, на вкладке Event
Log этого окна можно включить или отключить вывод различных сообщений программы.
По-английски отладка называется debugging. Как же произошло слово debugging
и почему ошибки в программе называют bug?
Происходило все задолго до изобретения первых микросхем. Тогда компьютеры
были построены на реле и занимали очень много места — целые залы и этажи зданий.
Соответственно, для обслуживания одного такого компьютера требовался
штат специалистов. Обслуживание и ремонт требовались часто — детали были
ненадежными. Но однажды компьютер перестал работать не из-за ненадежности
деталей (как потом оказалось), и специалисты начали искать причину. Через некоторое
время ее нашли — причиной оказался жук (bug), который забрался внутрь
компьютера и замкнул собой один из контактов. Жука вытащили, а компьютер
запустили.
После обнаружения и устранения неисправности в журнале эксплуатации компьютера
записали «debugging» (удаление жука). Так и повелось, что любые неисправности
компьютеров, а потом и ошибки программного обеспечения по-английски
стали называть bug.
|
|
|