Учебник по 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.




 

Рейтинг@Mail.ru          Rambler's Top100

X-ZiBiT