in reply to How can I print variable contents from the debugger non-interactively?
some hands on examples
a action (per line) and w watchpoint (each time) take Perl code to be evaluated.
you can do pretty nifty things with that already
use strict; use warnings; $|=1; # disable buffering my $a; our $y; for (0..10) { print; $a++; $y++; }
DB<71> h a a [line] command Set an action to be done before the line is executed; line defaults to the current execution line. Sequence is: check for breakpoint/watchpoint, print line if necessary, do action, prompt user if necessary, execute line. a Does nothing
a doesn't break unless you set $DB::single explicitly to 1
DB<72> a 10 if($y>3 and $y <7) { print "\n<y: $y>\n" } DB<73> L d:/Users/RolfLangsdorf/AppData/Roaming/pm/tst_debuger.pl: 10: print; action: if($y>3 and $y <7) { print "\n<y: $y>\n" } DB<73> c 0123 <y: 4> 4 <y: 5> 5 <y: 6> 678910 DB<74>
DB<79> h w w expr Add a global watch-expression. w Does nothing
w stops if the returned value has changed
w $a would stop each time $a is changing
this only stops if $a is inside the intervall
DB<81> L DB<81> w if ($a>3 and $a <7){ $a } DB<82> c 0123Watchpoint 0: if ($a>3 and $a <7){ $a } changed: old value: '' new value: '4' DB<82> c 4Watchpoint 0: if ($a>3 and $a <7){ $a } changed: old value: '4' new value: '5' DB<82> DB<82> c 5Watchpoint 0: if ($a>3 and $a <7){ $a } changed: old value: '5' new value: '6' DB<82> c 6Watchpoint 0: if ($a>3 and $a <7){ $a } changed: old value: '6' new value: '' DB<82> c 78910 DB<82>
this only stops for the first print and the first non print (print returns 1)
DB<78> w if ($a>3 and $a <7){ print "\n$DB::line<a: $a>\n" } DB<79> L Watch-expressions: if ($a>3 and $a <7){ print "\n$DB::line<a: $a>\n" } DB<79> c 0123 12<a: 4> Watchpoint 0: if ($a>3 and $a <7){ print "\n$DB::line<a: $a>\n" } c +hanged: old value: '' new value: '1' DB<79> c 10<a: 4> 4 11<a: 4> 12<a: 5> 10<a: 5> 5 11<a: 5> 12<a: 6> 10<a: 6> 6 11<a: 6> Watchpoint 0: if ($a>3 and $a <7){ print "\n$DB::line<a: $a>\n" } c +hanged: old value: '1' new value: ''
Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How can I print variable contents from the debugger non-interactively? ( b= break line conditionally )
by LanX (Saint) on Jul 15, 2017 at 11:42 UTC |