LanX has asked for the wisdom of the Perl Monks concerning the following question:


We had many debugger questions lately which made me meditate about better ways to communicate features.

Before reinventing the wheel, are there any selfcontained solutions with standalone debugger demos which can be used to show and test features?

I was thinking of something semantically like (just an untested sketch)

sub testsub { print "inside"; } print "outside"; testsub(); use DB::Demo <<'__DB__'; > b testsub > r __DB__

which sets a breakpoint and runs it? (this is not meant as replacement for $DB::single )

FWIW I know perl5db's source command and I somehow remember a way to pass a queue of commands via afterinit in .perldb

So this can be done with temporary .perldb files, I'd rather avoid this with an embedded format.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re: Debugger demos/snippets
by LanX (Sage) on Sep 02, 2021 at 13:11 UTC
    To answer my own question, this seems to work:

    use strict; use warnings; BEGIN { push @DB::typeahead,"b testsub","r"; } sub testsub { warn "inside"; } warn "outside"; testsub();

    > perl -d d:/tmp/pm/ Loading DB routines from version 1.57 Editor support enabled. Enter h or 'h h' for help, or 'perldoc perldebug' for more help. auto(-2) DB<1> b testsub auto(-1) DB<2> r outside at d:/tmp/pm/ line 14. at d:/tmp/pm/ line 14. DB<2> s inside at d:/tmp/pm/ line 10. at d:/tmp/pm/ line 10. main::testsub() called at d:/tmp/pm/ line 16 DB<2>

    all it needs is more syntactic sugar to be able to read a history file.

    and a wrapper module could handle the fact that

    > @DB::typeahead is not a supported interface and is subject to change in the future


    here a list of older discussions regarding typeahead, the older the better: click <Search>

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

A reply falls below the community's threshold of quality. You may see it by logging in.