in reply to Re^3: Make debugger break on source lines matching a pattern
in thread Make debugger break on source lines matching a pattern

We must have different versions of perl, with different call-stack depths in our debuggers.

Using a counter is a simple way of having the state change only before the matching line, and not after:

w $::ctr+=$::{"_<".(caller 3)[1]}[(caller 3)[2]] =~ /\bprint\b/
The bistable flip-flop seems like it should be perfect for this case, if you take care to use a non-constant always-true expression for the right hand side. Seems like it should. I can't get it to work properly. And now I'm spending more time playing with the debugger than debugging!

But it sure is a fun challenge.

Replies are listed 'Best First'.
Re^5: Make debugger break on source lines matching a pattern
by LanX (Saint) on Jan 12, 2014 at 11:40 UTC
    > The bistable flip-flop seems like it should be perfect for this case, ... I can't get it to work properly.

    IIRC are watchpoints evaluated code-snippets. Flip-flops are anchored in the op-tree but recompiling generates each time a new op-tree.

    > We must have different versions of perl,

    Not sure, I patched my local copy of .perldb a lot...

    ...

    Yep sorry, mea culpa, emptying my local .perldb makes (caller 2) working.

    ...

    Indeed, this watchpoint shows that my patching DB::eval() introduced a new call-frame

    Watchpoint 0: @{[ $z++, map { (caller $_)[0..3],"\n" } 1..3 ]} chan +ged: old value: '0', 'DB', '/home/lanx/.perldb', '3', 'DB::eval', ' ', 'DB', '/usr/share/perl/5.10/perl5db.pl', '1953', 'DB::new_eval', ' ', 'Config', '/usr/lib/perl/5.10/Config.pm', '62', 'DB::DB', ' '

    ( have to consider using goto )

    > And now I'm spending more time playing with the debugger than debugging!

    Indeed! ( Welcome in the brotherhood ;-)

    > But it sure is a fun challenge.

    If you liked this, you might be interested in this: =)

    YAPC::EU::2012 "IPL - From Debugger to Interactive Shell"

    See also linked slides and code, it shows some techniques to patch perl5db for your needs.

    Cheers Rolf

    ( addicted to the Perl Programming Language)