LOGO

____              _   _
|  _ \ _   _ _ __ | |_(_)_ __ ___   ___
| |_) | | | | '_ \| __| | '_ ` _ \ / _ \
|  _ <| |_| | | | | |_| | | | | | |  __/
|_| \_\\__,_|_| |_|\__|_|_| |_| |_|\___|

____       _
|  _ \  ___| |__  _   _  __ _  __ _  ___ _ __
| | | |/ _ \ '_ \| | | |/ _` |/ _` |/ _ \ '__|
| |_| |  __/ |_) | |_| | (_| | (_| |  __/ |
|____/ \___|_.__/ \__,_|\__, |\__, |\___|_|
                       |___/ |___/

NAME

Runtime::Debugger - Debug perl while its running.

VERSION

Version 0.02

SYNOPSIS

One can usually just do this:

# Insert this where you want to pause:
DB::single = 1;

# Then run the perl debugger to navigate there quickly:
PERLDBOPT='Nonstop' perl -d my_script

If that works for then great and dont' bother using this module!

Unfortunately for me, it was not working due to the scenario in which a script evals another perl test file and I would have liked to pause inside the test and see whats going on without having to keep rerunning the whole test over and over.

This module basically drops in a read,evaludate,print loop (REPL) whereever you need like so:

use Runtime::Debugger;
eval run;                # Not sure how to avoid using eval here while
                         # also being able to keep the lexical scope.
                         # Any ideas ? :)

Try with this command line:

perl -MRuntime::Debugger -E 'my $str1 = "str-1"; my $str2 = "str-2"; my @arr1 = "arr-1"; my @arr2 = "arr-2"; my %hash1 = qw(hash 1); my %hash2 = qw(hash 2);  eval run; say $@'

Press tab to autocomplete any lexical variables in scope.

Saves history locally.

SUBROUTINES/METHODS

run

Runs the REPL (dont forget eval!)

eval run

Sets $@ to the exit reason like 'INT' (Control-C) or 'q' (Normal exit/quit).

p

Data::Dumper::Dump anything.

p 123
p [1 ,2, 3]

uniq

Return a list of uniq values.

SEE ALSO

https://metacpan.org/pod/Devel::REPL

Great extendable module!

Unfortunately, I did not find a way to get the lexical variables in a scope. (maybe missed a plugin?!)

https://metacpan.org/pod/Reply

This module also looked nice, but same issue.

AUTHOR

Tim Potapov, <tim.potapov[AT]gmail.com>

BUGS

Please report any bugs or feature requests to https://github.com/poti1/runtime-debugger/issues.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Runtime::Debugger

You can also look for information at:

https://metacpan.org/Runtime::Debugger https://github.com/poti1/runtime-debugger

LICENSE AND COPYRIGHT

This software is Copyright (c) 2022 by Tim Potapov.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)