今天有位女同学过来问怎么调她写的CGI脚本,因为种种原因, 开发机上启不了httpd服务器,跟我说里面的perl代码她都已经测试过了,没问题,但是build没出来,等不及了,问我怎么手工调试。本来觉得实在太简单,没什么好说的,但是既然有人不知道,就总结一下,万一用上了呢?
想了一下,自己的调试方法也很原始,只有三板斧
1.使用curl
CGI本来是从Java代码调用过来的,但是为了调试几个小CGI而启动笨重无比的JavaEE容器就显得有点那么不太划算,最好的办法就是用curl,完全模拟了http request。首先你要拿到完整的url,八仙过海,各显神通,不管通过什么方式,你要用curl必须知道url是什么,然后就是在命令行中用curl + url。
curl的参数很多,支持http、httpS、FTP等协议,http支持GET、POST等。到目前为止,我遇到的各种http请求,用curl都能模拟,举个简单的例子
curl -k https://localhost:8002/cgi-bin/test?path=%2Fvar%2Flog\&time=1420956483378
因为httpd使能了httpS,所以加了参数-k,然后是url,注意有可能需要转义,特别是‘&’, 但是不一定需要URI escape。具体使用时如果碰到问题,看一下错误信息或者日志就清楚参数是否正确传入了。
2.支持使用perl命令行
如果实在没有httpd,curl也用不了,那用perl命令行也能跑Perl CGI脚本。方式就是
perl cgiscript.pl param1=val1 param2=val2 param3=val3结果该打印的还是会打印,跟使用curl差不多。而且也能够用$q->param("param1")的方式正确获得参数。
3.perl -d
这是perl内置的单步调试命令,可以加断点,可以查看变量的值,能够step in、step out方法,几乎跟IDE的功能差不多了。
我经常用这种方式来验证一些perl语言本身的特性,不依赖其他module,用起来很方便。
具体用法不多说,进去以后h一下就看到帮助了
再补充一个常用的命令,perl -c 来检查语法错误。写完脚本以后先用这个命令查一下,没有错误了再提交代码,因为编译不过而导致构建失败,这怎么说呢...
另外,你说你自己都跑过没问题了,一放到CGI上就报变量没定义,为嘛?建议平时写脚本的时候还是要带上use strict;
总结以上是内存溢出为你收集整理的Perl CGI 调试的几种方法全部内容,希望文章能够帮你解决Perl CGI 调试的几种方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)