Как мне использовать отладчик с mod_perl - PullRequest
8 голосов
/ 07 апреля 2011

Я пытаюсь подключить отладчик Perl к Apache и mod_perl.Наша среда довольно сложна (множество дополнительных компонентов (например, Catalyst), настроенных с помощью Apache), и инженеры, которые настроили ее, больше не работают в компании.Я следовал инструкциям на веб-сайте Apache, устанавливая «PerlFixupHandler Apache :: DB» и т. Д., Но пока все, что я получаю, - это перерыв в отладчике после доставки страницы.Я предполагаю, что я получаю перерыв в процессе отправки, а не в рабочем процессе.Я использую prefork MPM-версию Apache.В инструкциях по отладке говорится, что перед запуском httpd передается параметр -X.Но httpd, который я использую, не принимает параметр -X.Я предполагаю, что параметр -X на самом деле приведет к тому, что некоторые версии httpd НЕ будут разветвляться?

Любое и все руководство приветствуется.

$ ./httpd -v
Server version: Apache/2.2.17 (Unix)
Server built:   Nov 16 2010 20:13:24

-X isn't listed when I do httpd -?    
Usage: ./httpd [-D name] [-d directory] [-f file]
           [-C "directive"] [-c "directive"]
           [-k start|restart|graceful|graceful-stop|stop]
           [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]

Ответы [ 3 ]

2 голосов
/ 17 января 2013

Я успешно запустил отладчик, который поставляется с модулем epic perl для eclipse, а также отладчик komodo.

Для Komodo вы добавляете что-то вроде следующего в apache2.conf

<IfDefine DEBUG>
<Perl>
  use ModPerl::Registry;
  use lib qw(/usr/local/lib/perl/Komodo-PerlRemoteDebugging-6.0.3-59641-linux-x86);
  $ENV{PERLDB_OPTS} = "RemotePort=127.0.0.1:9000 LogFile=stderr";
  $ENV{DBGP_IDEKEY} = "yourkey";
  use Apache::DB ();
  Apache::DB->init;
</Perl>
</IfDefine>

Следуйте инструкциям здесь: http://docs.activestate.com/komodo/4.4/debugperl.html

Для Epic

<IfDefine DEBUG>
    PerlModule ModPerl::Registry
    PerlSetEnv PERLDB_OPTS "RemotePort=192.168.x.x:9500 DumpReused ReadLine=0 PrintRet=0"
    PerlSetEnv PERL5DB "BEGIN { $DB::CreateTTY=0; require /path_to_epic_db_scripts/perl5db.pl'; }"
    PerlRequire /path_to_epic_db_scripts/db.pl
    PerlPostConfigRequire /etc/apache2/perl/whatever.pl
</IfDefine>

См. Документацию здесь: http://www.epic -ide.org / guide / ch06.php

Конечно, Epic бесплатен, а Komodo - нет, и это показывает, что все еще довольно хорошо.Я должен сказать, что прошло около 18 месяцев с тех пор, как мне позвонили, чтобы использовать его, так что это примерно столько, сколько я помню.Удачи ....

2 голосов
/ 14 июня 2011

Книга 'Pro Perl Debugging' содержит главу «Отладка программы CGI» и подраздел «Настройка mod_perl».

Извините, у меня сейчас нет доступа к книге.

0 голосов
/ 25 апреля 2012

Я и несколько других в моей компании пытались подключить отладчик к mod_perl в течение многих лет.Нам удалось разорвать несколько этапов процесса mod_perl, прежде чем мы фактически достигли кода на наших страницах ASP, но нам никогда не удавалось проникнуть внутрь наших страниц ASP.Даже если мы прервемся до того, как наш код будет запущен, а затем 'c' в нашем операторе $ DB :: single = 1 внутри нашего интересного кода, страница завершится и не сломается (кажется, что она пропускает $ DB:: single).

Все мы считаем, что есть ошибка в нашей версии perl, нашей версии perl5db или в нашей версии mod_perl, что делает это невозможным для нашей версии.Мы находимся на Perl 5.8.9 и какой-то версии apache 2, которая ускользает от меня на данный момент.

Я знаю, что это не ответ, но я просто хотел сказать вам это, чтобы вы не сталимне не хочется сдаваться, если вы в конце концов сдадитесь.

Эта проблема, с которой мы сталкиваемся с mod_perl, является одной из основных причин того, что я нахожусь в процессе вставки слоя Plack междунаш веб-сервер и наше приложение.С помощью этого уровня абстракции я могу запустить другой веб-сервер в процессе разработки - и тот, на котором я могу подключить отладчик.Я ссылаюсь не столько на это, сколько на предположение, что вы делаете это, но просто чтобы вы знали, что я действительно серьезно отношусь к интерактивной отладке.

Я думаю, что следующим логическим шагом в эпической битве за интерактивную отладку в mod_perl будет создание последней версии и проверка работоспособности.Затем обновите нашу версию Perl и посмотрите, работает ли она.

...