| Devel-Events documentation | Contained in the Devel-Events distribution. |
Devel::Events::Generator::LineTrace - generate executing_line events using
the perl debugger api.
my $g = Devel::Events::Generator::LineTrace->new( handler => $h ); $g->enable(); # every line of code will fire an event until $g->disable();
This Devel::Events generator will fire line tracing events using DB::DB,
a perl debugger hook.
Only one instance may be enabled at a given time. Use Devel::Events::Handler::Multiplex to deliver events to multiple handlers.
When the generator is enabled, this event will fire for every line of code just before it is executed.
Lines in a package starting with Devel::Events:: will not be reported.
The package the line is in.
The file of the line being executed.
The line number of the line being executed.
Enable this generator instance, disabling any other instance of Devel::Events::Generator::LineTrace.
Stop firing events.
Called by DB::DB. Used to generate the event.
Apparently this must be run under perl -d. This is very strange, since
Devel::Events::Generator::SubTrace doesn't need the -d flag set.
The Enbugger module can help overcome this limitation.
perldebguts, Devel::LineTrace, DB, Devel::ebug, perl5db.pl
| Devel-Events documentation | Contained in the Devel-Events distribution. |
#!/usr/bin/perl BEGIN { $^P |= 0x02 } package Devel::Events::Generator::LineTrace; use Moose; with qw/Devel::Events::Generator/; use Scalar::Util qw/weaken/; my $SINGLETON; sub DB::DB { if ( $SINGLETON ) { my ( $package, $file, $line ) = caller; return if $package =~ /^Devel::Events::/; $SINGLETON->line( package => $package, file => $file, line => $line ); } } sub enable { my $self = shift; $SINGLETON = $self; weaken($SINGLETON); } sub disable { $SINGLETON = undef; } sub line { my ( $self, @args ) = @_; $self->send_event( executing_line => @args ); } __PACKAGE__; __END__