in reply to How can I print variable contents from the debugger non-interactively?

> to print all the variable contents when executing line XXX

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

sample code

use strict; use warnings; $|=1; # disable buffering my $a; our $y; for (0..10) { print; $a++; $y++; }

a = action cmd on line
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

w = watch-expression

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

this only stops for the first print and the first non print (print returns 1)

Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!

  • Comment on Re: How can I print variable contents from the debugger non-interactively? ( a = line action ; w = watch changes everywhere)
  • Select or Download Code

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
    b for break also takes code

    like in a you can execute code Perl line, just return something false if you don't want to break into interactive mode

    DB<119> b 11 print "\n<$y>\n" if $y==3;0 DB<120> L d:/Users/RolfLangsdorf/AppData/Roaming/pm/tst_debuger.pl: 11: $a++; break if (print "\n<$y>\n" if $y==3;0) DB<120> c 0123 <3> 45678910 DB<120>

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!