Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Отладка




 

Рассмотрим две процедуры:

 

procedure TForm1.AddNum;

Var

Value1, Value2, Total: integer;

begin

Value1:= StrToInt(Edit1.Text);

Value1:= StrToInt(Edit2.Text);

Label1:= StrToInt(Value1 + Value2);

end;

 

procedure TForm1.Button1Click;

begin

AddSum;

end;

 

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

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

Чтобы установить точку прерывания, щелкните на сером поле окна редактирования слева от текста программы (назовем это поле полоской) напротив той строки, на которой вы хотите установить точку прерывания. В данном случае это будет строка:

 

Valuel:= StrToInt (Editl.Text);

 

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

По умолчанию, полоска (gutter) задается видимой, но она может быть отключена в странице Display (Монитор) диалогового окна Environment Options (Опции среды), если вы снимите флаг кнопки-переключателя с именем Visible Gutter (полоска видна). Если полоска не видна, то щелкните на первом символе той строки программы, в которой вы хотите установить точку прерывания, и строка будет высвечена красным.

Если вы устанавливаете точку прерывания на строке кода, которая была оптимизирована Delphi, на экране появится диалоговое окно предупреждения (Warning) с вопросом, будете ли вы продолжать дальше. Это же окно вы увидите, если будете устанавливать точку прерывания, например, в строке с объявлениями переменных Var. В некоторых случаях вам может понадобиться для исследования и отладки программы переменная, которая исключается при компиляции с оптимизацией. Вы можете отключить оптимизацию, для чего выполните команду View | Project Manager (Просмотр | Менеджер проекта) и в появившемся диалоговом окне Project Options (Опции проекта) выберите страницу Compiler (компилятор). Уберите флаг соответствующего переключателя в разделе Code Generation (Генерация кода) и оптимизация проводится не будет. Более подробно этот вопрос освящается в руководствах Delphi и во встроенной в Delphi справочной системе.

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

Выполните программу еще раз. Введите число 4 как Значение 1 и 5 как Значение 2, затем нажмите кнопку Сложение. Вслед за этим появится окно редактора кода, где будет отмечено местоположение точки прерывания, как показано на рис.6.11. Точка прерывания отмечена зеленым маркером на полоске, который означает то, что вы остановились в этой точке прерывания, а указывающая направо зеленая стрелка отмечает текущую строку программы. В данном случае, текущая строка должна быть строкой, в которой установлена точка прерывания. Эта строка еще не выполнялась. Другими словами, зеленая стрелка указывает на следующую, подлежащую выполнению строку.

Сделаем еще одно заключительное замечание относительно точек прерывания. Вы можете установить специальные точки прерывания, в которых программа будет останавливаться только при выполнении некоторого условия или на указанном шаге цикла. Точки останова этого типа могут быть очень полезны, если ошибка в вашей программе возникает только при определенных условиях или в середине очень большого цикла. Чтобы установить условие или номер шага цикла для точки прерывания, вам нужно воспользоваться командой меню Run | Add Breakpoint (Выполнить | Добавить точку прерывания), вызывающей диалоговое окно Edit Breakpoint (Редактирование точек прерывания). Поскольку сейчас мы не будем использовать такие точки прерывания, мы закончим на этом их обсуждение. За подробной информацией обращайтесь ко встроенной в Delphi справочной системе и к руководствам Delphi.




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 278; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.