Есть ли способ сделать так, чтобы отладчик perl устанавливал точки останова на модулях, которые еще не загружены? - PullRequest
4 голосов
/ 25 июля 2011

Так что в будущем точки останова вступят в силу, как только будет загружен целевой файл. Иначе отладчик вряд ли поможет ...

main::(test.pl:7):      Class->new->go;
  DB<1> f Movie.pm
No file matching `Movie.pm' is loaded.
  DB<2> b Movie.pm:10
Subroutine main::Movie not found.

Я знаю, Movie.pm будет загружен и хочет установить bp на его 10-й строке ...

Ответы [ 3 ]

4 голосов
/ 25 июля 2011

Я могу обойти подобные проблемы, вручную введя строку «use» в отладчик.

  DB<1> b LWP::Simple::get
Subroutine LWP::Simple::get not found.

  DB<2> use LWP::Simple


  DB<3> b LWP::Simple::get

  DB<4>

Это помогает?

4 голосов
/ 25 июля 2011

Обходной путь: require модуль при запуске отладчика.Вы можете поместить материал в ваш .perldb rc файл , чтобы вам не приходилось вводить / вставлять его каждый сеанс отладчика.

1 голос
/ 08 июня 2016

Согласно DOC

После компиляции каждого необходимого файла, но перед его выполнением DB :: postponed (* {"_ <\ $ filename"}) вызывается, если подпрограмма DB :: postponed существует.Здесь $ filename - это расширенное имя требуемого файла, которое можно найти в значениях% INC. </p>

Так что вы можете перехватить это событие и установить точки останова, как только ваш модуль загрузится.

Также вы можете попробовать модуль Devel :: DebugHooks .Не стесняйтесь спрашивать меня на irc.perl.org #debughooks, если у вас есть какие-либо вопросы

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