Debug::Client(3) User Contributed Perl Documentation Debug::Client(3)NAMEDebug::Client - client side code for perl debugger
SYNOPIS
use Debug::Client;
my $debugger = Debug::Client->new(host => $host, port => $port);
$debugger->listen;
# this is the point where the external script need to be launched
# first setting
# $ENV{PERLDB_OPTS} = "RemotePort=$host:$port"
# then running
# perl -d script
my $out = $debugger->get;
$out = $debugger->step_in;
$out = $debugger->step_over;
my ($prompt, $module, $file, $row, $content) = $debugger->step_in;
my ($module, $file, $row, $content, $return_value) = $debugger->step_out;
my $value = $debugger->get_value('$x');
$debugger->run(); # run till end of breakpoint or watch
$debugger->run( 42 ); # run till line 42 (c in the debugger)
$debugger->run( 'foo' ); # tun till beginning of sub
$debugger->execute_code( '$answer = 42' );
$debugger->execute_code( '@name = qw(foo bar)' );
my $value = $debugger->get_value('@name'); $value is the dumped data?
$debugger->execute_code( '%phone_book = (foo => 123, bar => 456)' );
my $value = $debugger->get_value('%phone_book'); $value is the dumped data?
$debugger->set_breakpoint( "file", 23 ); # set breakpoint on file, line
$debugger->get_stack_trace
Other planned methods:
$debugger->set_breakpoint( "file", 23, COND ); # set breakpoint on file, line, on condition
$debugger->set_breakpoint( "file", subname, [COND] )
$debugger->set_watch
$debugger->remove_watch
$debugger->remove_breakpoint
$debugger->watch_variable (to make it easy to display values of variables)
DESCRIPTION
new
The constructor can get two parameters: host and port.
my $d = Debug::Client->new;
my $d = Debug::Client->new(host => 'remote.hots.com', port => 4242);
Immediately after the object creation one needs to call
$d->listen;
TODO: Is there any reason to separate the two?
listen
See "new"
buffer
Returns the content of the buffer since the last command
$debugger->buffer;
quit
show_line
step_in
step_over
step_out
my ($prompt, $module, $file, $row, $content, $return_value) = $debugger->step_out;
Where $prompt is just a number, probably useless
$return_value will be undef if the function was called in VOID context
It will hold a scalar value if called in SCALAR context
It will hold a reference to an array if called in LIST context.
TODO: check what happens when the return value is a reference to a
complex data structure or when some of the elements of the returned
array are themselves references
get_stack_trace
Sends the stack trace command "T" to the remote debugger and returns it
as a string if called in scalar context. Returns the prompt number and
the stack trace string when called in array context.
run
$d->run;
Will run till the next breakpoint or watch or the end of the script.
(Like pressing c in the debugger).
$d->run($param)
set_breakpoint
$d->set_breakpoint($file, $line, $condition);
execute_code
$d->execute_code($some_code_to_execute);
get_value
my $value = $d->get_value($x);
If $x is a scalar value, $value will contain that value. If it is a
reference to a SCALAR, ARRAY or HASH then $value should be the value of
that reference?
Actually I think this is an internal method....
In SCALAR context will return all the buffer collected since the last
command.
In LIST context will return ($prompt, $module, $file, $row, $content)
Where $prompt is the what the standard debugger uses for prompt.
Probably not too interesting. $file and $row describe the location of
the next instructions. $content is the actual line - this is probably
not too interesting as it is in the editor. $module is just the name of
the module in which the current execution is.
See Also
GRID::Machine::remotedebugtut
COPYRIGHT
Copyright 2008-2009 Gabor Szabo. <http://www.szabgab.com/>
LICENSE
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl 5 itself.
WARRANTY
There is no warranty whatsoever. If you lose data or your hair because
of this program, that's your problem.
CREDITS and THANKS
Originally started out from the remoteport.pl script from Pro Perl
Debugging written by Richard Foley.
POD ERRORS
Hey! The above document had some coding errors, which are explained
below:
Around line 436:
Unknown directive: =head
perl v5.14.1 2009-12-22 Debug::Client(3)