Debug::Client.3pm

Langue: en

Autres versions - même langue

Version: 2009-12-22 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Debug::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 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