В процессе отладки программы возникает необходимость приостановить ее выполнение в определенных подозрительных иестах, посмотреть значения
переменных и предпринять дальнейшие действия по отладке кода. Нам уже известна команда с отладчика, которая непрерывно выполняет код программы до первой встретившейся точки останова, но как задать ее?
Для этих целей служит команда ь (сокращение от английского глагола 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);
|
Команда |
Описание |
|
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 подпрогр |
Остановка после компилирования подпрограммы |