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

comment on

( [id://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

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

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

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

    How do I use this?Last hourOther CB clients
    Other Users?
    Others surveying the Monastery: (3)
    As of 2024-07-23 05:45 GMT
    Find Nodes?
      Voting Booth?

      No recent polls found

      erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.