in reply to Re: "omniscient debugging" for Perl
in thread "omniscient debugging" for Perl

A quick glance at the source shows that MJD is using the global $TRACE to decide if the trace output should be printed. Just set $TRACE = 0 at the top of your program, set it to a non-zero value when trace should start, and back to zero again when you want it off again.

Simple.

Replies are listed 'Best First'.
Re^3: "omniscient debugging" for Perl
by magog (Beadle) on Jul 06, 2005 at 19:22 UTC

    Thanks for the tip, pemungkah!

    The other problem is how to get the -d:Trace option to work under mod_perl.

    Here's how to do it:

    Add the following section to httpd.conf:

    <Perl> $Devel::Trace::TRACE = 0; </Perl>

    And start the server like this:

    $ PERL5OPT=-d:Trace sudo /etc/init.d/httpd restart

    Then in your code you can write:

    $Devel::Trace::TRACE = 1; # some buggy code $Devel::Trace::TRACE = 0;

    Problems:

    • Server spits out a mess of trace info before $TRACE is set to 0
    • Trace info (and there's a lot of it) goes to the error log, which is hard to manage

    I think I'll try making a patch to allow turning off $TRACE via the command line, and to allow sending the trace info to a different file.

    Michael