SYNOPSIS

  perl -d:Trace program

DESCRIPTION

If you run your program with \*(C`perl -d:Trace program\*(C', this module will print a message to standard error just before each line is executed. For example, if your program looks like this:

#!/usr/bin/perl

print "Statement 1 at line 4\n"; print "Statement 2 at line 5\n"; print "Call to sub x returns ", &x(), " at line 6.\n";

exit 0;

sub x { print "In sub x at line 12.\n"; return 13; }

Then the \*(C`Trace\*(C' output will look like this:

>> ./test:4: print "Statement 1 at line 4\n"; >> ./test:5: print "Statement 2 at line 5\n"; >> ./test:6: print "Call to sub x returns ", &x(), " at line 6.\n"; >> ./test:12: print "In sub x at line 12.\n"; >> ./test:13: return 13; >> ./test:8: exit 0;

This is something like the shell's \*(C`-x\*(C' option.

DETAILS

Inside your program, you can enable and disable tracing by doing

$Devel::Trace::TRACE = 1; # Enable $Devel::Trace::TRACE = 0; # Disable

or

Devel::Trace::trace('on'); # Enable Devel::Trace::trace('off'); # Disable

\*(C`Devel::Trace\*(C' exports the \*(C`trace\*(C' function if you ask it to:

import Devel::Trace 'trace';

Then if you want you just say

trace 'on'; # Enable trace 'off'; # Disable

TODO

  • You should be able to send the trace output to the filehandle of your choice.

  • You should be able to specify the format of the output.

  • You should be able to get the output into a string.

We'll see.

LICENSE

Devel::Trace 0.11 and its source code are hereby placed in the public domain.

Author

Mark-Jason Dominus (C<[email protected]>), Plover Systems co. See the C<Devel::Trace.pm> Page at http://www.plover.com/~mjd/perl/Trace for news and upgrades.