Когда я запускаю Perl script, как я могу его отладить? Например, в ksh я добавляю флаг -x
. Но как я делаю то же самое в Perl?
Как я могу отлаживать Perl script?
Ответ 1
perl -d your_script.pl args
заключается в том, как вы отлаживаете Perl
Ответ 2
Если вы используете интерактивный отладчик, вы можете попробовать perldebug
Ответ 3
Чтобы запустить script под отладчиком perl, вы должны использовать переключатель -d
:
perl -d script.pl
Но perl является гибким. Он снабжает некоторые крючки, и вы можете заставить отладчик работать так, как вы хотите.
Итак, вы можете использовать разные отладчики:
perl -d:DebugHooks::Terminal script.pl
# OR
perl -d:Trepan script.pl
Посмотрите эти модули здесь и здесь
Существует несколько наиболее интересных модулей perl, которые подключаются к внутренним внутренним компонентам отладчика: Devel::NYTProf, Devel::Cover
Ответ 4
Я также рекомендовал бы использовать отладчик Perl.
Однако, поскольку вы спросили о чем-то вроде shell -x
, посмотрите на Devel:: Trace, который делает что-то подобное.
Ответ 5
Используйте Eclipse с EPIC: Это дает вам приятную среду IDE с возможностями отладки, включая возможность размещения точек останова и Perl Expression View
для проверки значения переменных.
Ответ 6
Самый эффективный инструмент отладки по-прежнему тщательная мысль, связанная с разумно размещенными заявлениями печати.
(И улучшение операторов печати с Data::Dumper)
Ответ 7
Если вы хотите выполнить удаленную отладку (для cgi или если вы не хотите использовать вывод с командной строкой отладки), используйте это:
данный тест:
use v5.14;
say 1;
say 2;
say 3;
Запустите прослушиватель любого хоста и порта на терминале 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