NAME
Devel::Chitin::Actionable - Get and set breakpoints and actions
SYNOPSIS
my $unconditional_bp = Devel::Chitin::Breakpoint->new(
file => $filename, line => 123 );
my $conditional_bp = Devel::Chitin::Breakpoint->new(
file => $filename, $line => 123,
code => q($a eq 'stop'));
my $inactive_bp = Devel::Chitin::Breakpoint->new(
file => $filename, $line 123,
inactive => 1);
my @bp = Devel::Chitin::Breakpoint->get(file => $filename, line => 123);
printf("breakpoint on line %d of %s: %s\n",
$bp[0]->line, $b[0]->file, $bp[0]->code);
DESCRIPTION
Used to manipulate breakpoints and actions in the debugged program. Breakpoints are used to stop execution of the debugged program and let the debugging system take control there. Actions are used to run arbitrary code before a line in the debugged program executes.
Breakpoints
Breakpoints are associated with a file and line number, and the same file/line combination may have more than one breakpoint. At each line with one or more breakpoints, all those breakpoints are tested by eval-ing (as a string eval) their code
in the context of the debugged program. If any of these tests returns true, the debugger will stop the program before executing that line.
Constructor
my $bp = Devel::Chitin::Breakpoint->new(file => $f, line => $l,
[ code => $code ],
[ once => 1 ],
[ inactive => 1]);
Creates a new Breakpoint object. file
and line
are required arguments. file
must be a filename as it appears in $main::{"<_$file"}. If code
is omitted, the value "1" is used as a default which creates an unconditional breakpoint. If once
is a true value, then the breakpoint will delete itself after triggering. If inactive
is true, the breakpoint will not trigger.
Methods
- my @bp = Devel::Chitin::Breakpoint->get(file => $f, %other_params);
-
Retrieve breakpoints. Always returns a list of matching breakpoints.
file
is required, and if no other filters are used, returns all the breakpoints for that file. You may also filter by line, code and inactive. - $bp->file
- $bp->line
- $bp->once
-
Read-only accessors that return whatever values were used to create the breakpoint.
- $bp->code
- $bp->code($string)
-
Mutator that retrieves the breakpoint's code condition, or sets it.
- $bp->inactive();
- $bp->inactive( 1 | 0);
-
Mutator that retrieves the current inactive flag, or sets it.
- $bp->delete();
-
Remove a breakpoint. Deleted breakpoints will never trigger again.
Actions
Actions are a lot like breakpoints; they are associated with a file and line number, and they have code that runs before that line in the program is executed. The difference is that the return value from the code is ignored.
The code is evaluated in the context of the running program, so it can, for example, affect variables there or print them out.
Constructor
my $act = Devel::Chitin::Action->new(file => $f, line => $l, code => $code,
[ once => 1],
[ inactive => 1]);
Creates a new Action object. file
, line
and code
are required arguments. file
must be a filename as it appears in $main::{"<_$file"}. breakpoint. If once
is a true value, then the action will delete itself after running. If inactive
is true, the action will not run.
Methods
- my @acts = Devel::Chitin::Action->get(file => $f, %other_params);
-
Retrieve actions. Always returns a list of matching actions.
file
is required, and if no other filters are used, returns all the actions for that file. You may also filter by line, code and inactive. - $act->file
- $act->line
- $act->once
-
Read-only accessors that return whatever values were used to create the action.
- $act->code
- $act->code($string);
-
Mutator that retrieves the action's code, or set it.
- $act->inactive();
- $act->inactive( 1 | 0);
-
Mutator that retrieves the current inactive flag, or sets it.
- $act->delete();
-
Remove an action. Deleted actions will never run again.
SEE ALSO
AUTHOR
Anthony Brummett <brummett@cpan.org>
COPYRIGHT
Copyright 2016, Anthony Brummett. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.