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:
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 +.#!/usr/bin/perl -d:ptkdb
The DISPLAY environment variable needs to be set in the BEGIN block of the perl code.
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.#!/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";
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
Back to
Meditations