perl-cgi命令行调试

来源:

http://www.cnblogs.com/itech/archive/2012/09/23/2698838.html

参考:
 http://docstore.mik.ua/orelly/linux/cgi/ch15_03.htm

http://stackoverflow.com/questions/2224158/how-can-i-send-post-and-get-data-to-a-perl-cgi-script-via-the-command-line
 http://search.cpan.org/~lds/CGI.pm-3.20/CGI.pm#DEBUGGING

一 一般地我们可以使用以下方法来检查cgi脚本的错误:
1)使用-cwT来检查cgi脚本的语法,警告。例如perl -wcT your.cgi.
2)在命令行执行cgi:./calendar.cgi month=jan year=2001.

3)在命令行执行时可以交互式offline地输入cgi需要的参数, 此时cgi脚本中需要加入-debug参数 use CGI qw(-debug);,然后执行./calendar 且输入 month=jan year=2001,最后退出输入执行(use Ctrl-D on Unix or Mac; use Ctrl-Z on Windows) 。
4)将cgi放到webserver,然后通过webbrowser来对其测试,此时可以使用print来打印变量的值到html来帮助调试。也可以使用use CGI::Carp qw(warningsToBrowser fatalsToBrowser);将警告和错误打印到html。
5)检查webserver的log:tail -f /usr/local/apache/logs/error_log.

二 命令行执行cgi脚本的实例

1)

通过post方式来调用cgi脚本:

$ echo -n ‘a=b;c=d‘ | REQUEST_METHOD=POST CONTENT_LENGTH=999 perl index.cgi

通过get方式来调用cgi脚本:

$ perl index.cgi ‘a=b;c=d‘

2)

For example, with the following program (notice -debug in the arguments to use CGI)

#! /usr/bin/perl

use warnings;use strict;

use CGI qw/ :standard -debug /;

print "Content-type: text/plain\n\n",      map { $_ . " => " . param($_) . "\n" }      param;

you feed it parameters on the command line:

$ ./prog.cgi foo=bar baz=quux
Content-type: text/plain  foo => bar baz => quux

You can also do so via the standard input:

$ ./prog.cgi (offline mode: enter name=value pairs on standard input; press ^D or ^Z when done) foo=bar baz=quux ^D 
Content-type: text/plain foo => bar baz => quux

3)

当用get方式时,设置环境变量 QUERY_STRING (实例在windows上)

set [email protected]&Fullname=M+Name
perl -w scriptname.cgi

当用post方式时,需要将query_string的内容输入到临时文件testinput.txt,例如

echo [email protected]&Fullname=M+Name >testinput.txt

perl -w scriptname.cgi < testinput.txt

三 来自perl cgi man page的帮助

If you are running the script from the command line or in the perl debugger, you can pass the script a list of keywords or parameter=value pairs on the command line or from standard input (you don‘t have to worry about tricking your script into reading from environment variables). You can pass keywords like this:

    your_script.pl keyword1 keyword2 keyword3

or this:

   your_script.pl keyword1+keyword2+keyword3

or this:

    your_script.pl name1=value1 name2=value2

or this:

    your_script.pl name1=value1&name2=value2

To turn off this feature, use the -no_debug pragma.

To test the POST method, you may enable full debugging with the -debug pragma. This will allow you to feed newline-delimited name=value pairs to the script on standard input.

When debugging, you can use quotes and backslashes to escape characters in the familiar shell manner, letting you place spaces and other funny characters in your parameter=value pairs:

   your_script.pl "name1=‘I am a long value‘" "name2=two\ words"

Finally, you can set the path info for the script by prefixing the first name/value parameter with the path followed by a question mark (?):

your_script.pl /your/path/here?name1=value1&name2=value2

时间: 2024-12-09 07:55:29

perl-cgi命令行调试的相关文章

u-boot命令行调试LCD简单记录

一般来说,调试uboot最好的方式是使用openjtag,因为uboot说到底就是一段裸机程序,只不过比较复杂.但是受实际环境限制,实际工作中使用较多的调试技巧主要有两种:打印和直接在命令行测试,打印比较常见也比较简单,直接使用printf即可,这里就以最近这段时间调试uboot下面lcd为例,简单说说命令行调试. 平台: am335x,u-boot 2010.09,linux 3.10 问题: 由于此版本u-boot比较旧,没有整套framebuffer子系统框架,所以采取的是移植好官方裸机驱

使用GDB命令行调试器调试C/C++程序【转】

转自:https://linux.cn/article-4302-1.html 编译自:http://xmodulo.com/gdb-command-line-debugger.html作者: Adrien Brochard原创:LCTT https://linux.cn/article-4302-1.html译者: SPccman本文地址:https://linux.cn/article-4302-1.html 2014-11-25 21:48    评论: 31 收藏: 19 分享: 43

使用GDB命令行调试器调试C/C++程序

没有调试器的情况下编写程序时最糟糕的状况是什么?编译时跪着祈祷不要出错?用血祭召唤恶魔帮你运行程序?或者在每一行代码间添加printf("test")语句来定位错误点?如你所知,编写程序时不使用调试器的话是不方便的.幸好,linux下调试还是很方便的.大多数人使用的IDE都集成了调试器,但 linux 最著名的调试器是命令行形式的C/C++调试器GDB.然而,与其他命令行工具一致,DGB需要一定的练习才能完全掌握.这里,我会告诉你GDB的基本情况及使用方法. 安装GDB 大多数的发行版

ubuntu下命令行调试Python程序

Python提供类似于C++ gdb的调试工具pdb,我们可以在Linux下使用pdb在命令行下进行Python程序的调试. 官方参考网站: Python2: https://docs.python.org/2/library/pdb.html Python3: https://docs.python.org/3/library/pdb.html 一般地,我们可以使用如下的方式进入调试(比如我们要调试的源文件为hello.py): 1. 在命令行启动目标程序,加上-m参数. python -m

基于DEV的命令行调试

这个在main函数参数使用挺有用的. 在电脑里面找到Dev-Cpp安装位置(或许在C:\Program Files(x86)) 戳进去,在Dev-Cpp目录里面搜索bin文件夹地址,并记着(或不记也行,等下要用再找=.=) 右键我的电脑,选择属性 选择高级系统设置 选环境变量(在弹出框较下部分) 点Path后点编辑 把一开始那些地址和加上\bin的地址都新建加入这个框内 各种确定 保存~ 菜单键+R 输入cmd打开命令行 输入 g++ -o exeName CppFileAddress地址可以拖

使用GDB命令行调试C/C++程序

#include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { int i; int a=0, b=0, c=0; double d; for (i=0; i<100; i++) { a++; if (i>97) d = i / 2.0; b++; } return 0; } GDB的使用 首先最重要的,你需要使用编译器的 "-g"选项来编译程序,这样可执行程序才能通过

一幅图告诉你所有的NodeJS命令行调试语句

NodeJS提供脚本调试. 输入node debug xx.js即可进入调试模式.

一张地图,告诉你NodeJS命令行调试器语句

NodeJS提供脚本调试. 进入node debug xx.js您可以进入调试模式. 版权声明:本文博客原创文章,博客,未经同意,不得转载.

PowerShe 命令行调试指引(转)

How to manage a debugging session Before you start debugging, you must set one or more breakpoints. You cannot set a breakpoint unless the script that you want to debug is saved. For directions on of how to set a breakpoint, see How to manage breakpo