Rand Stats

Rakudo::Perl6::Tracer

github:jaffa4

Rakudo::Perl6::Tracer

Trace Perl6 code.

Known limitations: if there is a BEGIN, there will not be any formatting. Also, if classes are imported from nqp.

Usage

use Rakudo::Perl6::Tracer;

my $f = Rakudo::Perl6::Tracer.new(); # create a new object
say $f.trace({},$content); #  trace the content

The returned program code will contain tracing statements beside the original code.

If you run the traced code, you will see what lines were executed.

Command line access

$ perl6 trace.p6 -h

$ perl6 trace.p6  <Dagrammar.p6 >traced.p6
$ perl6 trace.p6 -sl  <Dagrammar.p6 >traced.p6

Example

Example of traced code, note statements are inserted by trace.p6:

sub dump_node($node)
{
 note "line  19";say "matched";
 note "line  20";if ($node<regliteral>) {
 note "line  21";say "reg $node"~$node<regliteral>;
 note "line  22";}
note "line  23";}

OR example trace log with -sl

line  1 my @Depindex;
line  2 my @Depthis;
line  3 my @Depon;
line  4 my @Depend;
line  5 my @Bot;
line  7 my $debug = False;
line  215 my %h;
line  216 my %g;
line  217 %h<itemid> = 1;
line  218 %g<itemid> = 2;
line  219 %h<name>   = '1';
line  220 %g<name>   = '2';
line  222 my %j  = ( "itemid", 3, "name", 3 );
line  223 my %j4 = ( "itemid", 4, "name", 4 );