mod_perl调试&查看源

时间:2011-09-28 14:35:10

标签: perl debugging mod-perl

我最近开始研究使用mod_perl的项目。我正在尝试使用Perl调试器来调试在mod_perl下运行的一些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>

这会带我进入调试器。当我在浏览器中加载所需的页面时,调试器会破坏由mod_perl包装的Perl脚本的第一行(应用程序正在使用PerlRun,btw)。我现在可以单步执行代码,打印变量等等。

我的问题是查看源代码(l-v)的命令在Perl脚本中不显示任何内容。它们在模块内按预期工作 - 也就是说,如果代码进入Perl脚本使用的模块,则视图源命令可以正常工作。

这是mod_perl中调试的已知问题吗?我能做些什么来解决它吗?

我在CentOS 5.6 x86_64上使用Apache 2.2.3和Perl 5.8.8。

1 个答案:

答案 0 :(得分:1)

我以前遇到过这个问题,并对这个问题进行了有根据的猜测。我目前的工作原理是调试器没有显示perl解析的代码,因为perl在编译阶段已经抛弃了它。相反,调试器查看相对路径以从实际文件中获取源代码。但是,调试器从Apache服务器根开始查找,这可能与启动Apache的位置不同。当它找不到文件时,它会显示为一堆空行。