Как я могу отладить скрипт Perl? - PullRequest
23 голосов
/ 09 февраля 2011

Когда я запускаю Perl-скрипт, как я могу его отладить?Например, в ksh я добавляю флаг -x.Но как мне сделать то же самое в Perl?

Ответы [ 7 ]

12 голосов
/ 09 февраля 2011
perl -d your_script.pl args

- это то, как вы отлаживаете Perl

8 голосов
/ 09 февраля 2011

Если для вас подходит интерактивный отладчик, попробуйте perldebug

7 голосов
/ 19 июня 2016

Чтобы запустить скрипт под отладчиком perl, вы должны использовать ключ -d:

perl -d script.pl

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

Таким образом, чтобы использовать разные отладчики, вы можете сделать:

perl -d:DebugHooks::Terminal script.pl
# OR
perl -d:Trepan script.pl

Смотрите эти модули здесь и здесь

Существует несколько наиболее интересных модулей perl, которые подключаются к внутренним компонентам отладчика perl: Devel :: NYTProf , Devel :: Cover

и многие другие

4 голосов
/ 02 июля 2014

Использование Eclipse с EPIC : предоставляет прекрасную среду разработки с возможностями отладки, включая возможность установки точек останова и Perl Expression View для проверки значения переменных.*

4 голосов
/ 09 февраля 2011

Я бы также рекомендовал использовать отладчик Perl .

Однако, поскольку вы спрашивали о чем-то вроде -x оболочки, посмотрите на Devel :: Trace модуль, который делает что-то подобное.

2 голосов
/ 27 июня 2014

Самый эффективный инструмент отладки по-прежнему тщательно продуман в сочетании с разумно размещенными печатными заявлениями.

Брайан Керниган, «Unix для начинающих» (1979)

(и расширение операторов печати с помощью Data :: Dumper )

0 голосов
/ 08 июля 2015

Если вы хотите выполнить удаленную отладку (для cgi или если вы не хотите связывать вывод с командной строкой отладки), используйте это:

данный тест:

use v5.14;
say 1;
say 2;
say 3;

Startпрослушиватель на любом хосте и порту терминала 1 (здесь localhost: 12345):

$ nc -v -l localhost -p 12345

для поддержки readline используйте rlwrap (вы также можете использовать на perl -d):

$ rlwrap nc -v -l localhost -p 12345

И запустить тест на другой клемме (скажем, на клемме 2):

$ PERLDB_OPTS="RemotePort=localhost:12345" perl -d test

Вход / выход на клемме 1:

Connection from 127.0.0.1:42994

Loading DB routines from perl5db.pl version 1.49
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(test:2): say 1;
  DB<1> n
main::(test:3): say 2;
  DB<1> select $DB::OUT

  DB<2> n
2
main::(test:4): say 3;
  DB<2> n
3
Debugged program terminated.  Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.  
  DB<2> 

Выход на клемме 2:

1

Обратите внимание на предложение, если вы хотите выводить данные на терминал отладки.

select $DB::OUT

Если вы являетесь пользователем vim, установите этот плагин: dbg.vim , который обеспечивает базовыйподдержка perl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...