Devel-Events
view release on metacpan or search on metacpan
lib/Devel/Events/Generator/LineTrace.pm view on Meta::CPAN
BEGIN { $^P |= 0x02 }
package Devel::Events::Generator::LineTrace;
# vim: set ts=2 sw=2 noet nolist :
# ABSTRACT: Generate C<executing_line> events using the perl debugger api
our $VERSION = '0.10';
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__
=pod
=encoding UTF-8
=head1 NAME
Devel::Events::Generator::LineTrace - Generate C<executing_line> events using the perl debugger api
=head1 VERSION
version 0.10
=head1 SYNOPSIS
my $g = Devel::Events::Generator::LineTrace->new( handler => $h );
$g->enable();
# every line of code will fire an event until
$g->disable();
=head1 DESCRIPTION
This L<Devel::Events> generator will fire line tracing events using C<DB::DB>,
a perl debugger hook.
Only one instance may be enabled at a given time. Use
L<Devel::Events::Handler::Multiplex> to deliver events to multiple handlers.
=head1 EVENTS
=over 4
=item executing_line
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 C<Devel::Events::> will not be reported.
=over 4
=item package
( run in 1.617 second using v1.01-cache-2.11-cpan-800906f7e73 )