mod_perl отладка и просмотр исходного кода - PullRequest
3 голосов
/ 28 сентября 2011

Я недавно начал работу над проектом, который использует mod_perl. Я пытаюсь использовать отладчик Perl для отладки некоторых сценариев Perl, работающих под mod_perl. Я запускаю отладчик с помощью следующей команды:

sudo OPTIONS="-X -DPERLDB" /etc/init.d/httpd restart

Соответствующий раздел отладки perl.conf (входит в httpd.conf):

<IfDefine PERLDB>
    <Perl>
        use Apache::DB ();
        Apache::DB->init;
    </Perl>
    <Location />
        PerlFixupHandler Apache::DB
    </Location>
</IfDefine>

Это берет меня в отладчик. Когда я загружаю нужную страницу в браузер, отладчик разрывается на первую строку скрипта Perl, который был упакован mod_perl (приложение использует PerlRun, кстати). Теперь я могу просмотреть код, вывести переменные и т. Д.

Моя проблема в том, что команды для просмотра исходного кода (l, - и v) не отображают ничего внутри скрипта Perl. Они работают как положено внутри модуля - то есть, если код входит в модуль, который используется сценарием Perl, команды представления исходного кода работают.

Это известная проблема с отладкой в ​​mod_perl? Что я могу сделать, чтобы это исправить?

Я использую Apache 2.2.3 и Perl 5.8.8 в CentOS 5.6 x86_64.

1 Ответ

1 голос
/ 29 сентября 2011

Я сталкивался с проблемой раньше, и у меня есть обоснованное предположение о проблеме. Моя текущая рабочая теория состоит в том, что отладчик не показывает код, который анализировал perl, потому что perl уже выбросил его на этапе компиляции. Вместо этого отладчик просматривает относительные пути, чтобы получить исходный код из фактического файла. Однако отладчик начинает поиск из корня сервера Apache, который может отличаться от того, где вы запустили Apache. Когда он не может найти файл, он отображается как набор пустых строк.

...