Как установить точку останова на конкретный файл в программе Perl? - PullRequest
19 голосов
/ 19 января 2012

Моя Perl-программа выглядит следующим образом:

foo/
foo/bar/
for/bar/test.pm
foo.pm
foo/bar.pm
test.pl

и для запуска программы используйте perl test.pl.Я хочу отладить саб в foo / bar / test.pm.Как установить точку останова на этом сабе?

Как мне это сделать?

Спасибо.

Ответы [ 2 ]

28 голосов
/ 19 января 2012

Чтобы отладить сценарий perl, используйте переключатель -d для вызова отладчика.

perl -d test.pl

В отладчике вы можете использовать b <line no>, чтобы установить точку останова в текущем файле. Иногда бывает сложно установить точку останова в файле, который еще не был загружен или был загружен давным-давно, поэтому вы также можете поставить строку

$DB::single = 1;

в любом месте любой Perl-программы, и отладчик сразу же прекратит работу после выполнения этой строки. Это также хороший способ (единственный способ?) Установить точку останова в коде, который будет выполняться во время компиляции.

11 голосов
/ 19 января 2012

Просто используйте полное имя sub в качестве аргумента для b:

b foo::bar::test::subname

Пример:

$ perl -d -e'use CGI; CGI->new'
...
main::(-e:1):   use CGI; CGI->new
  DB<1> b CGI::new
  DB<2> r
CGI::new(.../CGI.pm:337):
337:      my($class,@initializer) = @_;
  DB<2> q
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...