Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Debugger demos/snippets

by LanX (Sage)
on Sep 02, 2021 at 12:32 UTC ( #11136363=perlquestion: print w/replies, xml ) Need Help??

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

Hi

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

    You can mock TTY input to debugger by adding arbitrary commands to @DB::typeahead . For example, your .perldb file might contain:

    sub afterinit { push @DB::typeahead, "b 4", "b 6"; }

    Which would attempt to set breakpoints on lines 4 and 6 immediately after debugger initialization. Note that @DB::typeahead is not a supported interface and is subject to change in future releases.

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/db_demo.pl Loading DB routines from perl5db.pl 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/db_demo.pl line 14. at d:/tmp/pm/db_demo.pl line 14. DB<2> s inside at d:/tmp/pm/db_demo.pl line 10. at d:/tmp/pm/db_demo.pl line 10. main::testsub() called at d:/tmp/pm/db_demo.pl 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

    update

    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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11136363]
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2022-01-26 15:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:












    Results (69 votes). Check out past polls.

    Notices?