También podemos usar el depurador para ejecutar el
programa paso a paso. El depurador de Perl se activa
usando la opción -d
del intérprete:
1 $ perl -d hola.pl 2 3 Loading DB routines from perl5db.pl version 1.25 4 Editor support available. 5 6 Enter h or `h h' for help, or `man perldebug' for more help. 7 8 main::(hola.pl:2): print "hola!\n"; 9 DB<1> h 10 List/search source lines: Control script execution: 11 l [ln|sub] List source code T Stack trace 12 - or . List previous/current line s [expr] Single step [in expr] 13 v [line] View around line n [expr] Next, steps over subs 14 f filename View source in file <CR/Enter> Repeat last n or s 15 /pattern/ ?patt? Search forw/backw r Return from subroutine 16 M Show module versions c [ln|sub] Continue until position 17 Debugger controls: L List break/watch/actions 18 o [...] Set debugger options t [expr] Toggle trace [trace expr] 19 <[<]|{[{]|>[>] [cmd] Do pre/post-prompt b [ln|event|sub] [cnd] Set breakpoint 20 ! [N|pat] Redo a previous command B ln|* Delete a/all breakpoints 21 H [-num] Display last num commands a [ln] cmd Do cmd before line 22 = [a val] Define/list an alias A ln|* Delete a/all actions 23 h [db_cmd] Get help on command w expr Add a watch expression 24 h h Complete help page W expr|* Delete a/all watch exprs 25 |[|]db_cmd Send output to pager ![!] syscmd Run cmd in a subprocess 26 q or ^D Quit R Attempt a restart 27 Data Examination: expr Execute perl code, also see: s,n,t expr 28 x|m expr Evals expr in list context, dumps the result or lists methods. 29 p expr Print expression (uses script's current package). 30 S [[!]pat] List subroutine names [not] matching pattern 31 V [Pk [Vars]] List Variables in Package. Vars can be ~pattern or !pattern. 32 X [Vars] Same as "V current_package [Vars]". i class inheritance tree. 33 y [n [Vars]] List lexicals in higher scope <n>. Vars same as V. 34 For more help, type h cmd_letter, or run man perldebug for all docs. 35 DB<1> l 36 2==> print "hola!\n"; 37 DB<1> n 38 hola! 39 Debugged program terminated. Use q to quit or R to restart, 40 use O inhibit_exit to avoid stopping after program termination, 41 h q, h R or h O to get additional info. 42 DB<1> q 43 $
h
(línea 9) permite obtener ayuda.
l
(línea 35) podemos listar el programa.
n
(línea 37) nos permite ejecutar paso a paso.
A diferencia de la orden s
, en el caso de
que la instrucción sea una llamada a subrutina,
no se entra en la subrutina.
q
nos permite salir del depurador.
Consulte el libro de Foley y Lester [4] para saber mas sobre el depurador. También podemos consultar http://debugger.perl.org/. En http://refcards.com/docs/forda/perl-debugger/perl-debugger-refcard-a4.pdf se puede encontrar una página de referencia (PDF).
Casiano Rodríguez León