如何在mod_perl下启用perl调试器?

时间:2019-06-20 17:32:57

标签: apache perl mod-perl2

我想对我的代码进行非交互式调试。启用了httpd的代码正在mod_perl2下运行。

根据official documentation我可以喜欢

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

据我了解,我需要使用PerlSetEnv将apache setenv转换为apache2 config的语言。所以配置必须看起来像

<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_OPTSPERL5OPT是正确的变量:

$ 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 个答案:

答案 0 :(得分:1)

这对我来说无效无效:

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
...

祝你好运!