精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● CGI>>编程技巧>>CGI 程序员排错手册

主题:CGI 程序员排错手册
发信人: zhcharles(弦下之意 -> 寻)
整理人: workingnow(2003-07-07 22:06:19), 站内信件

CGI 程序员排错手册

小传(zhcharles) 

作为程序员,最大的工作莫过于程序的调试与排错。现小弟将自己在写 CGI 程序时的调试心得与各位分享,但水平有限,请大家多多指教!

语言部份:

现在写 CGI 最多的语言莫过于 perl,perl 以它天生对文字的处理的灵活性,得到了许多的 CGI 程序的喜爱,是现今写 CGI 使用人数最多的一种语言之一,所以首先说一说 Perl。

作为一个解释型的程序语言,程序的语法是很重要的。perl 内置了一个语法的检查开关,如下:

perl -c script

这将对 script 这个脚本程序进行语法的检查,而不会对该脚本进行解释运行。如果出现错误,perl 会指出错误的语法和错误的地方,并且会提供少许的提示。这步是 perl 程序排错的最基本之中的基本。

如果想得到更详细的错误信息,可使用以下这人开关:

perl -w script

这个 -w 开关是打开 perl 的警告开关,这个开关会提示更多的错误信息。例如出错代码的行号或使用了没有定义的变量。

当 perl 返回错误码代码的行号,而您的文件编辑器没有显示行号的功能,可以使用作者的一个小程序。该程序没有很大的功能,它只会显示文本文件内指定的行的内容。代码如下:

#!/usr/bin/perl -w
# name showline.pl

open(FH,"$ARGV[0]");
my $i = 1;
while(<FH>) {
    if($i == $ARGV[1]) {
        print "$_";
        last;
    }
    $i++;
}
close(FH);

用法: ./showline.pl file num_of_line

如: ./showline.pl error.pl 35

这样就会显示 error.pl 文件里的第 35 行的内容。

如果不想在命令行输入 -w 开关,可以程序的头一行输入,如下:

#!/usr/bin/perl -w

perl 还有一个专门用于调试程序的开关 -d,不过我从来都不用,大家可以自己去找些关于这方面的资料!

--

在 UNIX 下,如果要执行一个程序,该程序必需要有执行的权限,而不像 DOS 下以 .exe 和 .com 结尾就代表程序。所以,想运行 CGI 程序的话,就必需对该程序加上执行的权限。命令如下:

chmod +x script

这样就可以让所有人都可以执行该程序了。另外要注意的是,权限这个东东不是一言两句就可以说得清楚,一定会结合实际的情况来进行分配权限,一不小心可能会让黑客有机可乘。

 

服务器部份:

CGI 程序是通过服务器才能与用户通信,而且,大多数的 CGI 程序出错后,都会在服务器的错误记录文件里记下错误的信息,所以懂得看服务器的错误记录文件也会对程序的调试有很大的帮助。

Pdff

这种情况是 CGI 程序还没有在向 Web 服务器输入出数据时指明输入内容的类型。如果输出的信息为纯文本格式,就要在输入前加入以下这句语句:

print "Content-type:text/paint\n\n";

如果是 html 的文件信息,就用以下这句:

print "Content-type:text/html\n\n";

不过一定要注意!在打印信息类型( text/html ) 时,后面一定要退一行空白的行,所以用了两个 \n 这是 CGI 标准规定的,否则程序会出错,而浏览器就会出现 500 服务器错误信息。



[关闭][返回]