В Перл реализован превосходный механизм отладки программ. Вам достаточно запустить программу с ключом '-d' и вы начнете работать с интерактивным отладчиком. Вам становятся доступны все переменные и массивы, вы можете вводить выражения и операторы, трассировать, исследовать работу программы в по-шаговом режиме и многое другое. Ниже перечисленны команды отладчика которые вы можете вводить на его подсказку.
Команды отладчика.
h | Получить справку по командам |
T | Просмотреть стек программы |
s | Выполнить одну команду и остановиться |
n | Выполнить подпрограмму и остановиться |
r | Выполнить текущую подпрограмму и остановиться |
c | Продолжить выполнение до сдедующей точки остановки |
c номер | Продолжить выполнение до строки с данным номером |
<CR> | Повторить последнию команду n или s |
l min+incr | Вывести incr+1 строк программы начиная со строки min |
l min-max | Вывести строки начиная с min до max |
l номер | Вывести строку с указанным номером |
l | Вывести следующий экран строк |
- | Вывести предыдущий экран строк |
w строк | Вывести экран строк. Текущая в середине |
l подпрограмма | Вывести строки указанной подпрограммы |
/шаблон/ | Найти строку в тексте программы |
?шаблон? | Обратный поиск строки в тексте программы |
L | Вывести строки с точками останова и активами |
S | Вывести имена всех подпрограмм |
t | Включить или выключить трассировку |
b строка [ условие] | Установить точку остановки |
b подпрограмма [ условие ] | Установить точку остановки в начале указанной подпрограммы и если указано при данном условии |
d | Убрать точку остановки |
D | Убрать все точки остановки |
a строка команда | Установить актив (команду которая выполнится вместе с указанной строкой. "команда" - обычныая команда Перл |
A | Стереть все активы |
< команда | Выполнять команду перед каждой остановкой |
> команда | Выполнить команду после остановки отладчика |
V модуль [имена] | Вывести значение всех или указанных имен в модуле. Внимание! Символ '$' не вводится |
X [имена] | То же что и V , но только для текущего модуля |
! номер | Выполнить одну строку программ |
! -номер | Выполнить одну команду с номером предшествующим текущей строке |
H - n | Вывести n последних выполненных команд |
q или ^D | Выход из программы |
команда | Выполнить команду Перл |
p выражение | Вывести значение выражения |
Конструктор BEGIN не отслеживается отладчиком, но можно в теле конструктора указать:
$DB::single =1;
и отладчик остановится. Данная команда не вызовет ошибку при работе без отладчика.