use warnings;
use strict;
one();
exit(0);
sub one {
my $str = 'hello, world!';
two($str);
}
sub two {
my $str = shift;
$str =~ s/hello/goodbye/;
three($str);
}
sub three {
my $str = shift;
print "$str\n";
}
####
goodbye, world!
####
perl -wMstrict -MDevel::Trace::Subs=install_trace -e 'install_trace(file => "trace.pl");'
####
use Devel::Trace::Subs qw(trace trace_dump); # injected by Devel::Trace::Subs
use warnings;
use strict;
one();
exit(0);
sub one {
trace() if $ENV{DTS_ENABLE}; # injected by Devel::Trace::Subs
my $str = 'hello, world!';
two($str);
}
sub two {
trace() if $ENV{DTS_ENABLE}; # injected by Devel::Trace::Subs
my $str = shift;
$str =~ s/hello/goodbye/;
three($str);
}
sub three {
trace() if $ENV{DTS_ENABLE}; # injected by Devel::Trace::Subs
my $str = shift;
print "$str\n";
}
####
$ENV{DTS_ENABLE} = 1; # add this line before the first sub call
trace_dump(); # add this line after the last sub call
####
goodbye, world!
Code flow:
1: main::one
2: main::two
3: main::three
Stack trace:
in: main::one
sub: -
file: ./trace.pl
line: 8
package: main
in: main::two
sub: main::one
file: ./trace.pl
line: 19
package: main
in: main::three
sub: main::two
file: ./trace.pl
line: 27
package: main
####
perl -wMstrict -MDevel::Trace::Subs=remove_trace -e 'remove_trace(file => "trace.pl");'
####
sudo perl -MDevel::Trace::Subs=install_trace -e 'install_trace(file=>"Data::Dump");'
####
perl -MData::Dump -MDevel::Trace::Subs=trace_dump -e '$ENV{DTS_ENABLE}=1; dd {a => 1}; trace_dump'
{ a => 1 }
Code flow:
1: Data::Dump::dd
2: Data::Dump::dump
3: Data::Dump::_dump
4: Data::Dump::tied_str
5: Data::Dump::_dump
6: Data::Dump::format_list
Stack trace:
in: Data::Dump::dd
sub: -
file: -e
line: 1
package: main
in: Data::Dump::dump
sub: Data::Dump::dd
file: /usr/lib/perl5/site_perl/5.22.0/Data/Dump.pm
line: 84
package: Data::Dump
in: Data::Dump::_dump
sub: Data::Dump::dump
file: /usr/lib/perl5/site_perl/5.22.0/Data/Dump.pm
line: 36
package: Data::Dump
in: Data::Dump::tied_str
sub: Data::Dump::_dump
file: /usr/lib/perl5/site_perl/5.22.0/Data/Dump.pm
line: 292
package: Data::Dump
in: Data::Dump::_dump
sub: Data::Dump::_dump
file: /usr/lib/perl5/site_perl/5.22.0/Data/Dump.pm
line: 331
package: Data::Dump
in: Data::Dump::format_list
sub: Data::Dump::dump
file: /usr/lib/perl5/site_perl/5.22.0/Data/Dump.pm
line: 65
package: Data::Dump
####
sudo perl -MDevel::Trace::Subs=remove_trace -e 'remove_trace(file=>"Data::Dump");'