Подтвердить что ты не робот

Как я могу отлаживать Perl script?

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

4b9b3361

Ответ 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 для проверки значения переменных.

Ответ 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