Первый сайт на Perl

         

Точки останова и действия



Точки останова и действия

В процессе отладки программы возникает необходимость приостановить ее выполнение в определенных подозрительных иестах, посмотреть значения

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

Для этих целей служит команда ь (сокращение от английского глагола break — прервать) отладчика. Ее параметром является номер строки кода, в которой устанавливается точка останова: отладчик приостановит выполнение программы Perl перед заданной строкой. Если команда ь вызывается без параметра, то точка останова определяется в текущей строке.

Можно определить точку останова в первой строке кода подпрограммы. Для этого команде b необходимо передать в качестве параметра имя подпрограммы. Например, следующая команда

DB<11> b mySub

I устанавливает точку останова в первой строке кода подпрограммы mySub.

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

DB<1> b 4 $r==l I

определяет условную точку останова в строке 4. Отладчик приостановит выполнение программы перед этой строкой по команде с только, если значение переменной $г будет равно 1.

Команда L отображает список всех установленных точек останова, как безусловных, так и условных:

DB<1> b 4 $г==1 DB<2> b 6 DB<3> L

Iexample2.pl: . •:.,-. , 4: %ref = ("One",!, "Two",2);


break if ($r==l) 6: @s = split;

break if (1) •/;•;'• : • -

Отображаемая информация о точке останова представляет номер строки и код Perl, а также условие, при котором действует точка останова (break if (УСЛОВИЕ)). Для безусловной точки останова условие всегда истинно и равно 1.

Для удаления точки останова достаточно выполнить команду d с параметром, равным номеру строки, в которой определена точка останова. Команда о удаляет все точки останова, определенные в сеансе работы с отладчиком.

Полезно при отладке программы задать действия, которые будут предприняты перед выполнением операторов определенной строки. Например, напечатать значения каких-либо переменных или изменить их при выполнении некоторого цикла. Подобное поведение программы можно реализовать, задав действия командой а. Два ее параметра определяют строку кода и сами действия (обычный оператор Perl) перед началом выполнения операторов заданной строки:

а 75 print "*** $ref\n";

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

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

Мы познакомили читателя лишь с основными командами отладчика, наиболее важными и полезными, с нашей точки зрения, для процесса поиска ошибок. Их полный набор с краткими описаниями представлен в табл. 14.2. Более подробную информацию можно всегда найти в документации, с которой распространяется Perl, или из различных ресурсов Internet.

Таблица 14.2. Основные команды отладчика

















































































Команда



Описание



m



Отображается содержимое стека вызванных подпрограмм



s



Пошаговое выполнение программы (с заходом в подпрограммы)



n



Пошаговое выполнение программы (без захода в подпрограммы)



<Enter>



Повтор последней команды s или п



r



Завершение текущей подпрограммы и возврат из нее



с [строка] с [подпрогр]



Непрерывное выполнение кода программы до первой точки останова или указанной строки, или подпрограммы



1 строка+число



Отображает число плюс одну строку кода, начиная с заданной строки —



1 строка!-строка2



Отображает диапазон строк: от строки с номером строка! до строки с номером строка2



1 строка



Отображает заданную строку



1 подпрогр



Отображает первый блок строк кода подпрограммы



1



Отображает следующий блок из 10 строк



-



Отображает предыдущий блок из 10 строк



w [строка]



Отображает блок строк вокруг заданной строки







Возврат к выполненной строке



f файл



Переключение на просмотр файла. Файл должен быть загружен



/образец/



/ Поиск строки по образцу; направление вперед от текущей строки. Завершающая косая черта не обязательна



?образец?



Поиск строки по образцу; направление назад от текущей строки. Завершающий символ "?" не обязателен



L



Отображение всех установленных точек останова



S [ [ ! ] образец]



Отображение имен подпрограмм, [не] соответствующих образцу



t



Включение/выключение режима трассировки



b [строка] [условие]



Установка точки останова в заданной строке и условия ее действия



b подпрогр [условие]



Установка точки останова в первой строке подпрограммы и условия ее действия



b load файл



Установка точки останова на операторе require файл



b postpone подпрогр [условие]



Установка точки останова в первой строке подпрограммы после ее компилирования



b compile подпрогр



Остановка после компилирования подпрограммы

В этой, можно сказать, завершающей главе мы познакомились с возможностями интерпретатора peri для решения некоторых задач системного администрирования в UNIX. Установка некоторых опций интерпретатора при его запуске из командной строки меняет режим работы, позволяя практически без написания кода изменять, проверять, копировать и отображать содержимое файлов.

Для удобства и ускорения отладки больших программ в интерпретаторе per! предусмотрен встроенный отладчик. Его команды позволяют приостанавливать выполнение сценария Perl в подозрительных точках, задавать определенные действия при выполнении кода программы, просматривать стек вызова подпрограмм, менять в цикле значения переменных программы и многие другие полезные при поиске ошибок действия. Использование отладчика ускоряет процесс разработки программ Perl.




Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий