КАТЕГОРИИ: Архитектура-(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/Debugger/Integrated активизирована. Введите с клавиатуры и откомпилируйте текст данной программы, после чего нажмите клавишу [F8] (пошаговая отладка). Обратите внимание на тот факт, что маркер сразу перемещается на оператор BEGIN, расположенный в основном блоке программы. Это происходит потому, что оператор BEGIN является первым оператором, который выполняется в теле программы. Нажимая клавишу [F8], выполните эту программу до конца. Теперь вы можете попытаться оттрассировать эту же программу, нажимая клавишу [F7]. Обратите внимание на то, что трассировка программы во многом аналогична ее выполнению по шагам. Единственное отличие, как мы уже говорили, состоит в том, что когда встречается оператор вызова процедуры или функции, то при трассировке эти процедуры и функции также выполняются по шагам, а при простом выполнении по шагам управление возвращается к Вам только после завершения выполнения подпрограммы.
Дата добавления: 2014-01-07; Просмотров: 337; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |