Как включить Perl отладчик под mod_perl? - PullRequest
1 голос
/ 20 июня 2019

Я хочу сделать неинтерактивную отладку моего кода.Код работает под httpd с включенным mod_perl2.

Согласно официальной документации Я могу сделать как

% setenv PERL5OPT -d
% setenv PERLDB_OPTS "NonStop=1 LineInfo=db.out AutoTrace=1 frame=2"

Насколько я понимаю, мне нужно использовать PerlSetEnv перевод apache setenv на язык конфигурации apache2.Так что конфиг должен выглядеть так:

<IfDefine MODPERL>
    LoadModule perl_module modules/mod_perl.so
    ...
    PerlSetEnv PERL5OPT -d
    PerlSetEnv PERLDB_OPTS NonStop
</IfDefine>

Я пытался с таким конфигом, но не выводил на STDERR, когда я обернул некоторый код на

$DB::frame = 1;
# code
$DB::frame = 0;

Что я мог пропустить?

PERLDB_OPTS и PERL5OPT являются точно правильными переменными:

$ cat 1.pl 
#!/usr/bin/env perl
sub bar { foo() }
sub foo { }
sub hello {
$DB::frame=1; 
bar(); 
$DB::frame=0;
}
hello();
$ PERLDB_OPTS=NonStop PERL5OPT=-d perl 1.pl > /dev/null
   entering main::bar
    entering main::foo

1 Ответ

1 голос
/ 21 июня 2019

Это не работает для меня:

PerlSetEnv PERL5OPT -d
PerlSetEnv PERLDB_OPTS NonStop

Это на Apache / 2.4.10:

SetEnv PERL5OPT -d
SetEnv PERLDB_OPTS NonStop

Вывод в / var / log/apache2/error.log для меня по умолчанию:

...
[Fri Jun 21 14:43:51.886302 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:         entering DBD::_::common::install_method
[Fri Jun 21 14:43:51.886341 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:          entering DBI::_install_method
[Fri Jun 21 14:43:51.886385 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:         entering DBD::_::common::install_method
[Fri Jun 21 14:43:51.886425 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:          entering DBI::_install_method
[Fri Jun 21 14:43:51.886468 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:         entering DBD::_::common::install_method
[Fri Jun 21 14:43:51.886508 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:          entering DBI::_install_method
[Fri Jun 21 14:43:51.886784 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:       entering CODE(0x18904ff0)
[Fri Jun 21 14:43:51.886823 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:        entering DBI::dr::connect
[Fri Jun 21 14:43:51.886862 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:         entering DBD::Pg::dr::connect
[Fri Jun 21 14:43:51.886899 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:          entering DBI::_new_dbh
[Fri Jun 21 14:43:51.886943 2019] [cgi:error] [pid 24014] [client 127.0.0.1:48278] AH01215:           entering DBI::_new_handle
...

Удачи!

...