Наконец-то освоил Perl’овый отладчик
19 ноября 2012
Не понимаю, почему я раньше так его боялся. Недавно попробовал запустить, почитал справку и «карманный справочник», все понял и начал пользоваться. Принципы абсолютно те же, что и в других отладчиках. Думаю, тут мне весьма помог опыт работы с OllyDbg.
Запускается отладчик очень просто:
Кроме того, вы можете получить REPL-среду, выполнив команду:
Раньше для этих целей я использовал модуль Devel::REPL, который, в общем-то, всем хорош, если не считать зависимость от Moose и то, что некоторые другие его зависимости приходится подтягивать вручную.
Итак, отладчик мы запустили. Теперь рассмотрим доступные нам команды.
Прочитать код, начиная с определенной строчки, объявления процедуры или находящийся в диапазоне некоторых строк:
Посмотреть предыдущие относительно текущей позиции строки кода:
Посмотреть код в окрестностях текущей позиции или указанной строки, как перед, так и после нее:
Выполнить некую команду и просмотреть результат в $PAGER:
Поиск по регулярному выражению re в прямом направлении (если re не указан, продолжить предыдущий поиск):
По аналогии — поиск в обратном направлении:
Загрузить для просмотра заданный файл:
Вернуть просмотр кода на текущую позицию:
Показать все доступные методы класса:
Показать список всех загруженных модулей:
Показать список всех доступных подпрограмм:
Вычислить некое Perl-выражение и вывести результат:
Также в отладчике можно модифицировать значения переменных отлаживаемого скрипта:
Рекурсивный вывод переменных:
Список переменных:
Перечень лексических переменных:
Один шаг вперед, без захода внутрь процедур:
Один шаг вперед с заходами:
Показать стэк вызовов:
Включить/выключить трассировку:
Показать историю команд (команды n, l и x в историю не заносятся):
Повторить последнюю команду или заданную по номеру:
Запустить внешнюю команду в подчиненном процессе:
Выполнить команды отладчика из внешнего файла (можно сохранять действия, брейкпоинты и тп):
Продолжить выполнение скрипта до указанной строчки, процедуры или просто продолжить:
Продолжить выполнение скрипта до выхода из подпрограммы:
Вывести список действий (action), брейкпоинтов (breakpoints) или точек наблюдения (watchs):
Повесить брейкпоинт на указанную строчку или подпрограмму, плюс можно указать условие, при котором брейкоинт срабатывает:
Удалить брейкпоинт или все брейкпоинты:
Создать новое действие:
Удалить действие или все действия:
Создать точку наблюдения:
Удалить точку наблюдения или все точки наблюдения:
Начать отладку скрипта заново, сохранив точки останова и тп:
Создать действие, выполняемое перед каждым приглашением отладчика (pre-prompt action):
Список, удалить, добавить:
< *
<< expr
По аналогии > и >> — это команды для работы с post-prompt actions, а { и {{ — для работы с командами дебагера, выполняемыми перед каждым приглашением.
Справка и подробная справка:
h h
Читаем `perldoc perlre`:
Выход из отладчика:
В действительности пользоваться отладчиком в Perl очень просто. Не стану грузить вас примерами — если вы просто попробуете или почитаете perldoc perldebtut
, то сами во всем разберетесь за несколько минут.
Интересно, а отладчики для других языков (Python, Erlang, you name it) обладают всеми из названных возможностей? Или, быть может, имеют какие-то возможности, которых нет в отладчике для Perl?
Метки: Perl, Отладка, Разработка.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.