2

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

4

6 回答 6

4

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

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

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

于 2012-05-04T18:15:40.827 回答
3

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

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

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

于 2012-05-06T18:53:31.313 回答
1

目前尚不清楚您究竟要调试什么,但有一些提示:

于 2012-05-04T17:29:46.473 回答
1

我希望 Eclipse 有一种模拟 CGI 的方法。

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

于 2012-05-04T17:30:31.297 回答
1

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

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

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

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

于 2012-05-05T03:46:30.087 回答
0

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

于 2012-05-04T17:21:54.433 回答