Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Тема 3.4.2 Поиск ошибок с помощью отладчика




Цель задания: Научиться отлаживать программы с помощью встроенного

отладчика.

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

В программе, написанной на ТП, равно как и в программе, написанной на любом другом языке программирования, могут быть допущены ошибки, каждую из которых можно отнести к одному из следующих трех типов:

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

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

Если подобные ошибки возникают при использовании командно-строчного компилятора, то он выдает сообщение об ошибке, выводит исходную строку с ошибкой и ее номер, при этом символ (^) в выводимой исходной строке указывает местополо­жение ошибки.

2. Ошибки, проявляющиеся на этапе выполнения — ошибки, возни­кающие в связи с нарушением семантических правил написания программ на языке программирования Турбо Паскаль 7.0 (ярким примером ошибки данного типа является ситуация, когда Ваша программа пытается выполнить деление на нуль). Если написанная Вами программа обнаруживает ошибку такого типа, то она завершает свое выполнение и выводит сообщение следующего вида:

Run-time error <nnn> at <xxxx:yyyy>

где

ллл —номер ошибки выполнения,

хххх.-уууу — адрес ошибки выполнения.

 

Если Вы выполняете программу из ИИО ТП, то она автоматически найдет вызвавший семантическую ошибку опера­тор (так же как и в случае синтаксических ошибок). Если же программа выполнялась вне ИИО и в ней появилась ошибка данного типа, то необходимо запустить ИИО ТП и найти вызвавший семантическую ошибку оператор, используя коман­ду Search/Find Error (после того как Вы активизируете коман­ду Search/Find Error, она запросит у Вас адрес сегмента и смещения (хххх:уууу) оператора, вызвавшего семантическую ошибку).

3. Логические ошибки — это ошибки, связанные с неправильным применением тех или иных алгоритмических конструкций. ИИО ТП 7.0 не позволяет автоматически обнаруживать ошибки данного типа. Она лишь обладает рядом средств отладки, которые могут значительно облегчить процесс поиска таких ошибок.

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

Встроенный в ИИО ТП отладчик позволяет:

>• выполнять команды языка Паскаль построчно (пошагово);

>• трассировать команды языка Паскаль;

>• выполнять программу до некоторой определенной строки (до некоторой точки);

>• осуществлять перезапуск программы, не закончив ее выполнение.

Эти возможности позволяют контролировать ход выполнения программы.

Рассмотрим все эти управляющие средства по очереди.

Пошаговая отладка программы и трассировка.

 

Команды Step Over и Trace Into меню Rim позволяют осуществить построчную отладку программы. Активизация команды Step Over или нажатие функциональной клавиши [F8], так же как активиза­ция команды Trace Into или нажатие функциональной клавиши [F7], вызывает выполнение отладчиком всех операторов, располо­женных в строке, помеченной маркером (указателем строки выпол­нения). Единственное отличие между выполнением программы по шагам и ее трассировкой состоит в том, как реагирует отладчик на появление в тексте программы операторов вызова процедур или функций. При пошаговом выполнении программы вызов процедуры или функции интерпретируется как вызов простого оператора, т.е. Вы можете увидеть результаты работы процедуры, но не можете пошагово проследить, каким образом этот результат был получен, в то время как при трассировке программы такая возможность предоставляется.

Рассмотрим более подробно работу команд Step Over и Trace Into на следующем примере

PROGRAM Procedure_and_Function; {FUNKPROZ.PAS}

USESCrt;

VAR a, b, Sum_nuinbers: INTEGER;

PROCEDURE Summing-up (VAR Sum:INTEGER;a,b: INTEGER);

BEGIN

Sum := a + b;

END;

FUNCTION Sum(a,b: INTEGER):INTEGERS;

BEGIN

Sum := a + b;

END;

BEGIN

ClrScr;

a:= 12; b:= 15;

Suinming_up (Sum_number3, a, b);

WriteLn('Сумма равна: ',Sum_numbers);

Sum_number3:=Sum(a,b);

WriteLn('Сумма равна: ',Sum_numbers);

WriteLn('Сумма равна: ',Sum(a,b));

END.

Примечание:

Прежде чем проводить пошаговую отладку программы или ее трассировку, необходимо убедиться, что опция Options/Debug­ger/Integrated активизирована.

Введите с клавиатуры и откомпилируйте текст данной програм­мы, после чего нажмите клавишу [F8] (пошаговая отладка). Обра­тите внимание на тот факт, что маркер сразу перемещается на оператор BEGIN, расположенный в основном блоке программы. Это происходит потому, что оператор BEGIN является первым оператором, который выполняется в теле программы. Нажимая клавишу [F8], выполните эту программу до конца. Теперь вы можете попытаться оттрассировать эту же программу, нажимая клавишу [F7]. Обратите внимание на то, что трассировка програм­мы во многом аналогична ее выполнению по шагам. Единственное отличие, как мы уже говорили, состоит в том, что когда встречается оператор вызова процедуры или функции, то при трассировке эти процедуры и функции также выполняются по шагам, а при простом выполнении по шагам управление возвращается к Вам только после завершения выполнения подпрограммы.

 




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


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


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



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




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