perl - mod_perl 调试和查看源代码

标签 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,顺便说一句)。我现在可以单步执行代码、打印变量等等。

我的问题是查看源代码的命令(l-v)在Perl 脚本。它们在模块内按预期工作 - 也就是说,如果代码进入 Perl 脚本使用的模块,则查看源命令将工作。

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

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

最佳答案

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

关于perl - mod_perl 调试和查看源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584931/

相关文章:

Perl 内联 C : Passing Arrayref to C Function

perl - 我如何知道一个文件在 Perl 中是制表符还是空格分隔?

perl - 是否有因子图和积调度的 Perl 实现?

debugging - Gfortran 表现出奇怪的行为,这是一个错误吗?

xml - 修复 perl 文本>xml 转换器脚本

ios - React Native 显示神秘的堆栈跟踪而不是文件名

java - java调试器中的"Source not found"

perl - mod_perl与system()或exec()调用或反引号的奇怪行为

perl - 如何使用 mod_perl 在 CGI::Application 中拥有持久的 DBIx::Class?

javascript - 最可行的 WebSocket/Perl 解决方案