【问题标题】:Debugging perl CGI调试 perl CGI
【发布时间】:2012-05-07 02:53:31
【问题描述】:

我正在使用我创建的 Web 表单作为接口来查询 MySQL 数据库。我写了一些 perl CGI 脚本来处理查询。但我没有得到想要的输出,所以我需要 调试脚本。我怎么做?我主要使用 Eclipse 来调试 perl,但现在我有了 Web 表单参数(复选框、列表框)作为脚本的输入。有什么办法可以通过 在来自网页的输入中,然后在 Eclipse 中调试脚本?或者有没有其他方法 在这种情况下调试?希望我已经说清楚了。谢谢。

【问题讨论】:

    标签: eclipse perl debugging cgi xampp


    【解决方案1】:

    我使用this Perl module 进行CGI 调试。它允许您在从普通浏览器运行时捕获发送到 CGI 脚本的所有数据。然后,它允许您使用捕获的数据从任何地方(命令行、调试器中)“重播”脚本。

    CGI::Inspect 看起来很有希望,虽然我自己还没有尝试过。

    在正常 CGI 会话期间使用Devel::DumpTrace(通过 DUMPTRACE_FH 将数据记录到文件中)是一种无需使用实际调试器即可进行深入调试的方法。

    【讨论】:

      【解决方案2】:

      是的,当然你可以使用 Apache 的错误日志来做调试;这是一种非常懒惰但高效的工作方式。

      您提到您使用 Eclipse,所以我假设您也使用 EPIC 插件进行 Perl 开发。查看本章,了解如何配置 Eclipse/EPIC 以调试 CGI:

      http://www.epic-ide.org/guide/ch06s02.php

      【讨论】:

      • 这个链接正是我要找的!不知怎的,我自己找不到它。感谢分享!
      【解决方案3】:

      我希望 Eclipse 有办法模拟 CGI。

      我使用 ActiveState 的 Komodo IDE,它可以模拟 CGI(包括输入参数),所以我可以推荐它作为用于此目的的好工具。不过,IDE 不是免费的,但如果您要经常这样做,请考虑这是一项投资。 (我不隶属于 ActiveState - 只是一个快乐的客户。)

      【讨论】:

      • 我也使用 Komodo。模拟 CGI 在非常特殊的情况下很有帮助,但我也使用了 Komodo 的远程调试功能。我基本上让 Perl 在开发服务器上以调试模式运行,并将其指向我机器上的 Komodo 调试器。这样我就可以单步执行我的 CGI 脚本,因为它在 Web 服务器本身上运行。
      • 感谢您的建议,但我使用 Eclipse 的一个原因是因为它是免费的。事实证明,我可以像在 Komodo 中一样在 Eclipse 中模拟 CGI(请参阅接受的答案)。
      【解决方案4】:

      不清楚你到底想调试什么,但有一些提示:

      【讨论】:

        【解决方案5】:

        如果您有一个假设的用 perl 编写的 CGI 程序,名为 webawesome.pl,并且您想向它传递两个参数:名称和年龄,您可以使用这样的 shell 命令:

        prompt> perl -d webawesome.pl name=sifl age=21
        

        现在您在 perl 调试器中,您可以单步执行您的程序,命令行中的键/值对将作为表单参数由 CGI.pm 加载

        在 Eclipse 中设置这些命令行开关留给读者作为练习,因为我是一个毫不掩饰的 vi 用户,并且两三年没有使用 eclipse。我知道有设置运行/调试选项的对话框。

        【讨论】:

          【解决方案6】:

          您可以使用 Firebug 或 Fiddler 来查看您从表单发出的请求,以确保您发送的正是您认为的内容。您还可以打开文件open(fh,">>debug.txt") 并打印出您对日志文件进行的 sql 调用。我还建议学习 Data::Dumper,它会漂亮地打印出对象,以便您查看它们的结构。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-10
            • 1970-01-01
            • 2013-10-26
            • 2013-12-21
            • 2014-09-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多