Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
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


In reply to Debugging a CGI by toma

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2023-01-28 11:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?