CGI programs have earned the reputation for being problematic to debug. The X Window System that comes with linux includes features that can make CGI debugging much easier.

The ptkdb debugger can be invoked on the shebang line of a perl program like this:
#!/usr/bin/perl -d:ptkdb
As long as the web server machine can open the debugger window, this ptkdb debugger option works fine in a CGI program. In order to allow a any machine to open a window on your X-Windows display, execute xhost +.

The DISPLAY environment variable needs to be set in the BEGIN block of the perl code.

#!/usr/bin/perl -d:ptkdb BEGIN { # Set the DISPLAY variable to the name of the local machine # where the debugger window and web browser appear. $ENV{DISPLAY} = "mymachine:0" ; } $|++; print "Content-type: text/html\n\n"; print "<PRE>"; for (my $i=0; $i<10; $i++) { print "Count $i\n"; } print "</PRE>\n";
This technique is complementary to the more common techniques of sending the error messages to the browser, examining the error logs, and diagnostic print statements.

The nice part about this technique is that you can single step through the CGI program, set breakpoints, examine and change variables, and watch the CGI output being rendered in the browser one step at a time. All these features are available in the easy-to-use graphical user interface of ptkdb.

Note: tilly asked me to post this here after I wrote a much shorter version in the snippets section. I fixed a few spelling errors, also.

It should work perfectly the first time! - toma