jueves, 12 de febrero de 2015

Perl: How to Debug in Perl

How to Debug in Perl?

Perl Debugger

Si ejecutamos perl con la opción -d se ejecuta en modo debugger.


Código para hacer debug:

#!/usr/bin/perl
# example.pl
my $name = "Daro";
my $email = "daro@daro.com.ar";
$DB::single = 1; #breakpoint
if (!defined($email)){
print "Mail es undef. \n";
}else{
print "Mail es defined. \n";
}
$DB::single = 1; #breakpoint
if (!defined($name)){
print "Name es undef. \n";
}else{
print "Name es defined. \n";
}
#end script example.pl

Ejecutar por consola:

perl -d example.pl 

Loading DB routines from perl5db.pl version 1.33
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(ej.pl:5): my $name = "Daro";
  DB<1> c
main::(ej.pl:8): if (!defined($email)){
  DB<1> c
Mail es defined. 
main::(ej.pl:14): if (!defined($name)){
  DB<1> c
Name es defined. 
Debugged program terminated.  Use q to quit or R to restart,
  use o inhibit_exit to avoid stopping after program termination,
  h q, h R or h o to get additional info.  

  DB<1> h
List/search source lines:               Control script execution:
  l [ln|sub]  List source code            T           Stack trace
  - or .      List previous/current line  s [expr]    Single step [in expr]
  v [line]    View around line            n [expr]    Next, steps over subs
  f filename  View source in file         <CR/Enter>  Repeat last n or s
  /pattern/ ?patt?   Search forw/backw    r           Return from subroutine
  M           Show module versions        c [ln|sub]  Continue until position
Debugger controls:                        L           List break/watch/actions
  o [...]     Set debugger options        t [expr]    Toggle trace [trace expr]
  <[<]|{[{]|>[>] [cmd] Do pre/post-prompt b [ln|event|sub] [cnd] Set breakpoint
  ! [N|pat]   Redo a previous command     B ln|*      Delete a/all breakpoints
  H [-num]    Display last num commands   a [ln] cmd  Do cmd before line
  = [a val]   Define/list an alias        A ln|*      Delete a/all actions
  h [db_cmd]  Get help on command         w expr      Add a watch expression
  h h         Complete help page          W expr|*    Delete a/all watch exprs
  |[|]db_cmd  Send output to pager        ![!] syscmd Run cmd in a subprocess
  q or ^D     Quit                        R           Attempt a restart
Data Examination:     expr     Execute perl code, also see: s,n,t expr
  x|m expr       Evals expr in list context, dumps the result or lists methods.
  p expr         Print expression (uses script's current package).
  S [[!]pat]     List subroutine names [not] matching pattern
  V [Pk [Vars]]  List Variables in Package.  Vars can be ~pattern or !pattern.
  X [Vars]       Same as "V current_package [Vars]".  i class inheritance tree.
  y [n [Vars]]   List lexicals in higher scope <n>.  Vars same as V.
  e     Display thread id     E Display all thread ids.
For more help, type h cmd_letter, or run man perldebug for all docs.
  
DB<1> q




References:
http://perldoc.perl.org/perldebug.html

No hay comentarios:

Publicar un comentario