Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^4: How can I print variable contents from the debugger non-interactively? (@DB::typeahead)

by davehorner (Scribe)
on Jul 17, 2017 at 20:01 UTC ( [id://1195272]=note: print w/replies, xml ) Need Help??


in reply to Re^3: How can I print variable contents from the debugger non-interactively? (@DB::typeahead)
in thread How can I print variable contents from the debugger non-interactively?

> yes, it's still unclear for me if you want to step thru or run an automatic trace.

I think stepping thru the code would imply an interactive session. I am looking for an automatic trace, it would be nice to indicate which lines/variables should be printed, but having something that prints all of the variables modified and statements run would suffice. (huge output, but that isn't a problem!) There are some autotrace modules that may work, but I would like to accomplish this without additional modules. (lets make believe we are air gapped and getting to cpan is a problem)

> At least in .perldb with afterinit
sub afterinit { push @DB::typeahead, "b 4", "b 6"; }

So this isn't exactly thru the $ENV{PERLDB_OPTS} environment variable but using a file .perldb is easy enough to do. (though, @DB::typeahead is not a supported interface and is subject to change in future releases.)

I attempted the following:
echo "sub afterinit { push @DB::typeahead, \"a 119 p \$var\"; }" > .perldb

I see:

29: main(); auto(-1) DB<1> a 199 p __DB<2> (some program output) and then it shows 6556 segmentation fault with exit code 139.

not sure what is causing the seg fault and I again lose the automatic printing of all the statements, but I see some of the program output. Hopefully the above typeahead gives you an idea of what I'm trying to accomplish.


Thanks again for all the thought and replies.

  • Comment on Re^4: How can I print variable contents from the debugger non-interactively? (@DB::typeahead)
  • Download Code

Replies are listed 'Best First'.
Re^5: How can I print variable contents from the debugger non-interactively? (@DB::typeahead)
by LanX (Saint) on Jul 17, 2017 at 20:13 UTC
    There is already a whole trace infrastructure apart from the debugger.

    Please note the debugger IS eventually for interaction.

    And I've shown you already 3 approaches, with varying details and footprint

    • print when you break back to prompt {
    • print whenever you pass a certain point with a or b
    • print whenever you execute any statement with w

    > push @DB::typeahead, \"a 119 p \$var\";

    Please note again that a , b and w only take real Perl code

    but p is a debugger command

    Commands accepting debugger commands are documented with db_cmd or db_command

    DB<27> h { { db_command Define debugger command to run before each prompt. { ? List debugger commands to run before each prompt. {{ db_command Add to the list of debugger commands to run before ea +ch prompt. { * Delete the list of debugger commands to run before eac +h prompt.

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

      > I've shown you already 3 approaches, with varying details and footprint
      I very much appreciate your responses!

      > There is already a whole trace infrastructure apart from the debugger. the debugger IS eventually for interaction.
      I've seen Devel::Trace but that also seems to only print the statements and not the data. If there is a whole trace infrastructure (/w data printing capabilities) outside of the debugger I am not aware of it and would appreciate a pointer if so.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1195272]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (4)
As of 2024-04-16 16:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found