GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial del depurador de Perl:10 sencillos pasos para depurar el programa Perl

Anteriormente discutimos los conceptos básicos de cómo escribir y ejecutar un programa perl usando Perl Hello World Example.

En este artículo, revisemos cómo depurar un programa/script de perl usando el depurador de Perl , que es similar a la herramienta gdb para depurar código C.

Para depurar un programa perl, invoque el depurador perl usando "perl -d" como se muestra a continuación.

# perl -d  ./perl_debugger.pl

Para comprender los comandos del depurador de perl en detalle, creemos el siguiente programa perl de muestra (perl_debugger.pl).

$ cat perl_debugger.pl
#!/usr/bin/perl -w

# Script to list out the filenames (in the pwd) that contains specific pattern.

#Enabling slurp mode
$/=undef;

# Function : get_pattern
# Description : to get the pattern to be matched in files.
sub get_pattern
{
my $pattern;
print "Enter search string: ";
chomp ($pattern = <> );
return $pattern;
}

# Function : find_files
# Description : to get list of filenames that contains the input pattern.
sub find_files
{
my $pattern = shift;
my (@files,@list,$file);

# using glob, obtaining the filenames,
@files = <./*>;

# taking out the filenames that contains pattern.
@list = grep {
$file = $_;
open $FH,"$file";
@lines = <$FH>;
$count = grep { /$pattern/ } @lines;
$file if($count);
} @files;
return @list;
}
# to obtain the pattern from STDIN
$pattern = get_pattern();

# to find-out the list of filenames which has the input pattern.
@list = find_files($pattern);

print join "\n",@list;

1. Ingrese al depurador de Perl

# perl -d ./perl_debugger.pl

solicita,
DB<1>

2. Ver líneas específicas o declaraciones de subrutinas usando (l)

DB<1> l 10
10:mi $patrón;

DB<2> l get_pattern
11 {
12:my $pattern;
13:print “Ingrese la cadena de búsqueda:“;
14:chomp ($pattern =);
15:devuelve $patrón;
16 }

3. Establezca el punto de interrupción en la función get_pattern usando (b)

DB<3> b buscar_archivos

4. Establezca el punto de interrupción en una línea específica usando (b)

DB<4> b 44

5. Ver los puntos de interrupción usando (L)

DB<5> L
./perl_debugger.pl:
22:mi $patrón =shift;
romper si (1)
44:imprimir unir “\n”,@ lista;
romper si (1)

6. ejecución paso a paso usando (s y n)

DB<5> s
principal::(./perl_debugger.pl:39):$patrón =get_patrón();

DB<5> s
main::get_pattern(./perl_debugger.pl:12):
12:mi $patrón;

Las opciones s y n realizan la ejecución paso a paso de cada declaración. Option s pasos en la subrutina. La opción n ejecuta la subrutina en un solo paso (pasando por encima).

La opción s entra en la subrutina pero mientras que la opción n ejecutaría la subrutina (pasando por encima de ella).

7. Continúe hasta el próximo punto de interrupción (o número de línea o subrutina) usando (c)

DB<5> c
Ingrese la cadena de búsqueda:perl
main::find_files(./perl_debugger.pl:22):
22:my $pattern =shift;

8. Continúe hasta el número de línea específico usando (c)

DB<5> c 36
principal::buscar_archivos(./perl_debugger.pl:36):
36:devolver @lista;

9. Imprime el valor en la variable específica usando (p)

DB<6> p $patrón
perl

DB<7> c
principal::(./perl_debugger.pl:44):imprimir unión “\n”,@list;
DB<7> c
./perl_debugger.pl
Programa depurado finalizado. Use q para salir o R ​​para reiniciar,
use o inhibitor_exit para evitar detenerse después de la finalización del programa,
h q, h R o h o para obtener información adicional.

Después de la última operación de continuación, la salida se imprime en la salida estándar como "./perl_debugger.pl" ya que coincide con el patrón "perl".

10. Obtenga comandos de depuración del archivo (fuente)

El depurador de Perl puede obtener el comando de depuración del archivo y ejecutarlo. Por ejemplo, cree el archivo llamado "debug_cmds" con los comandos de depuración de perl como,

c
p $patrón
q

Tenga en cuenta que R se utiliza para reiniciar la operación (no es necesario salir y volver a iniciar el depurador).
DB<7> R
DB<7> source debug_cmds
>> c
Intro cadena de búsqueda:perl
./perl_debugger.pl
Programa depurado terminado. Use q para salir o R ​​para reiniciar,
use o inhibitor_exit para evitar detenerse después de la finalización del programa,
h q, h R o h o para obtener información adicional.
>> p $patrón
perl
>> q

Nota :Si es relativamente nuevo en Perl, consulte nuestro artículo anterior:20 consejos de programación de Perl para principiantes.

Resumen de los comandos del depurador de perl

Las siguientes opciones se pueden usar una vez que ingrese al depurador de Perl.

  • h o h h – para la página de ayuda
  • c:para continuar hacia abajo desde la ejecución actual hasta el punto de interrupción, de lo contrario, hasta el nombre de la subrutina o el número de línea,
  • p:para mostrar los valores de las variables,
  • b:para colocar los puntos de interrupción,
  • L:para ver los puntos de interrupción establecidos,
  • d:para eliminar los puntos de interrupción,
  • s:para pasar a la ejecución de la siguiente línea.
  • n:para pasar por encima de la ejecución de la siguiente línea, por lo que si la siguiente línea es una llamada de subrutina, ejecutará la subrutina pero no descenderá a ella para su inspección.
  • archivo fuente:para tomar los comandos de depuración del archivo.
  • l subname:para ver las sentencias de ejecución disponibles en una subrutina.
  • q:para salir del modo depurador.

Linux
  1. Cacti en un servidor ISPConfig en 10 sencillos pasos

  2. IlohaMail en su servidor ISPConfig en 10 sencillos pasos

  3. TYPO3 Enterprise CMS en un servidor ISPConfig en 10 sencillos pasos

  4. Joomla CMS en un servidor ISPConfig en 10 sencillos pasos

  5. Drupal CMS en un servidor ISPConfig en 10 sencillos pasos

Un tutorial práctico para usar GNU Project Debugger

Cómo instalar Elasticsearch en Ubuntu 20.04 LTS- Pasos sencillos

Tutorial de referencia y desreferenciación de matrices de Perl con ejemplos prácticos

4 sencillos pasos para instalar y configurar VMware Server 2 en Linux

Cómo instalar Ubuntu Touch en un dispositivo Android:un sencillo tutorial para novatos

Cómo jugar en Linux | Tutorial sencillo para novatos