GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial per il debugger di Perl:10 semplici passaggi per eseguire il debug del programma Perl

In precedenza abbiamo discusso le basi di come scrivere ed eseguire un programma perl usando Perl Hello World Example.

In questo articolo, esaminiamo come eseguire il debug di un programma/script perl utilizzando debugger Perl , che è simile allo strumento gdb per il debug del codice C.

Per eseguire il debug di un programma perl, richiama il debugger perl usando "perl -d" come mostrato di seguito.

# perl -d  ./perl_debugger.pl

Per comprendere in dettaglio i comandi del debugger perl, creiamo il seguente programma perl di esempio (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. Entra in Perl Debugger

# perl -d ./perl_debugger.pl

chiede,
DB<1>

2. Visualizza righe specifiche o istruzioni di subroutine utilizzando (l)

DB<1> l 10
10:il mio $modello;

DB<2> l get_pattern
11 {
12:my $pattern;
13:print “Enter search string:“;
14:chomp ($pattern =);
15:restituisce $modello;
16 }

3. Imposta il punto di interruzione sulla funzione get_pattern usando (b)

DB<3> b trova_file

4. Imposta il punto di interruzione su una riga specifica usando (b)

DB<4> b 44

5. Visualizza i punti di interruzione usando (L)

DB<5> L
./perl_debugger.pl:
22:my $pattern =shift;
break if (1)
44:print join “\n”,@ list;
interrompe se (1)

6. esecuzione passo passo utilizzando (s e n)

DB<5> s
main::(./perl_debugger.pl:39):$pattern =get_pattern();

DB<5> s
main::get_pattern(./perl_debugger.pl:12):
12:il mio $pattern;

L'opzione s e n esegue passo dopo passo ogni istruzione. L'opzione s entra nella subroutine. L'opzione n esegue la subroutine in un unico passaggio (superandola).

L'opzione s entra nella subroutine ma mentre n è l'opzione che eseguirebbe la subroutine (passandoci sopra).

7. Continua fino al punto di interruzione successivo (o numero di riga o subroutine) utilizzando (c)

DB<5> c
Inserisci la stringa di ricerca:perl
main::find_files(./perl_debugger.pl:22):
22:my $pattern =shift;

8. Continua fino al numero di riga specifico utilizzando (c)

DB<5> c 36
main::find_files(./perl_debugger.pl:36):
36:return @list;

9. Stampa il valore nella variabile specifica usando (p)

DB<6> p $modello
perl

DB<7> c
main::(./perl_debugger.pl:44):print join “\n”,@list;
DB<7> c
./perl_debugger.pl
Programma sottoposto a debug terminato. Utilizzare q per uscire o R per riavviare,
utilizzare o inibire_exit per evitare di interrompere dopo la fine del programma,
h q, h R o h o per ottenere ulteriori informazioni.

Dopo l'ultima operazione continua, l'output viene stampato sullo stdout come "./perl_debugger.pl" poiché corrisponde al modello "perl".

10. Ottieni i comandi di debug dal file (sorgente)

Il debugger Perl può ottenere il comando di debug dal file ed eseguirlo. Ad esempio, crea il file chiamato "debug_cmds" con i comandi di debug perl come,

c
p $modello
q

Si noti che R viene utilizzato per riavviare l'operazione (non è necessario chiudere e riavviare il debugger).
DB<7> R
DB<7> source debug_cmds
>> c
Enter stringa di ricerca:perl
./perl_debugger.pl
Programma sottoposto a debug terminato. Usa q per uscire o R per riavviare,
usa o inhibition_exit per evitare l'arresto dopo la fine del programma,
h q, h R o h o per ottenere ulteriori informazioni.
>> p $pattern
perl
>> q

Nota :Se sei relativamente nuovo in perl, fai riferimento al nostro articolo precedente:20 suggerimenti per la programmazione di Perl per principianti.

Riepilogo dei comandi del debugger perl

Le seguenti opzioni possono essere utilizzate una volta entrato nel debugger perl.

  • h o h h – per la pagina della guida
  • c – per continuare dall'esecuzione corrente fino al punto di interruzione, altrimenti fino al nome della subroutine o al numero di riga,
  • p – per mostrare i valori delle variabili,
  • b – per posizionare i punti di interruzione,
  • L – per vedere i punti di interruzione impostati,
  • d – per eliminare i punti di interruzione,
  • s – per passare all'esecuzione della riga successiva.
  • n – per scavalcare l'esecuzione della riga successiva, quindi se la riga successiva è chiamata a una subroutine, eseguirà la subroutine ma non vi discenderà per l'ispezione.
  • file sorgente – per prendere i comandi di debug dal file.
  • l subname – per vedere le istruzioni di esecuzione disponibili in una subroutine.
  • q – per uscire dalla modalità debugger.

Linux
  1. Un tutorial per il completamento di Bash facile??

  2. Cactus su un server ISPConfig in 10 semplici passaggi

  3. IlohaMail sul tuo server ISPConfig in 10 semplici passaggi

  4. TYPO3 Enterprise CMS su un server ISPConfig in 10 semplici passaggi

  5. Joomla CMS su un server ISPConfig in 10 semplici passaggi

Un tutorial pratico per l'utilizzo di GNU Project Debugger

Come installare Elasticsearch su Ubuntu 20.04 LTS - Semplici passi

4 semplici passaggi per installare e configurare VMware Server 2 su Linux

7 Esempi di Strace per eseguire il debug dell'esecuzione di un programma in Linux

Come installare Ubuntu Touch sul dispositivo Android:un semplice tutorial per principianti

Come giocare su Linux | Tutorial facile per principianti