GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel du débogueur Perl :10 étapes faciles pour déboguer le programme Perl

Dans cet article, examinons comment déboguer un programme/script perl en utilisant le débogueur Perl , qui est similaire à l'outil gdb pour le débogage du code C.

Pour déboguer un programme perl, appelez le débogueur perl en utilisant "perl -d" comme indiqué ci-dessous.

# perl -d  ./perl_debugger.pl

Pour comprendre en détail les commandes du débogueur perl, créons l'exemple de programme perl suivant (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. Entrez le débogueur Perl

# perl -d ./perl_debugger.pl

il demande,
DB<1>

2. Afficher des lignes spécifiques ou des instructions de sous-programme à l'aide de (l)

DB<1> l 10
10 :mon $pattern ;

DB<2> l get_pattern
11 {
12 :my $pattern ;
13 :print "Entrez la chaîne de recherche : " ;
14 :chomp ($pattern =);
15 :renvoie $motif ;
16 }

3. Définissez le point d'arrêt sur la fonction get_pattern en utilisant (b)

BD<3> b find_files

4. Définissez le point d'arrêt sur une ligne spécifique à l'aide de (b)

DB<4> b 44

5. Afficher les points d'arrêt à l'aide de (L)

DB<5> L
./perl_debugger.pl :
22 :my $pattern =shift ;
break if (1)
44 :print join "\n",@ liste ;
séparer si (1)

6. exécution pas à pas avec (s et n)

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

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

Les options s et n effectuent l'exécution pas à pas de chaque instruction. Les options entrent dans la sous-routine. L'option n exécute la sous-routine en une seule étape (en la parcourant).

L'option s entre dans la sous-routine mais tandis que l'option n exécuterait la sous-routine (en la parcourant).

7. Continuer jusqu'au prochain point d'arrêt (ou numéro de ligne, ou sous-programme) en utilisant (c)

DB<5> c
Entrez la chaîne de recherche :perl
main::find_files(./perl_debugger.pl:22):
22 :my $pattern =shift;

8. Continuez jusqu'au numéro de ligne spécifique en utilisant (c)

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

9. Imprimer la valeur dans la variable spécifique en utilisant (p)

DB<6> p $motif
perl

DB<7> c
main::(./perl_debugger.pl:44) :print join "\n",@list;
DB<7> c
./perl_debugger.pl
Programme débogué terminé. Utilisez q pour quitter ou R pour redémarrer,
utilisez o inhibit_exit pour éviter l'arrêt après la fin du programme,
h q, h R ou h o pour obtenir des informations supplémentaires.

Après la dernière opération continue, la sortie est imprimée sur la sortie standard sous la forme "./perl_debugger.pl" car elle correspond au modèle "perl".

10. Obtenir les commandes de débogage à partir du fichier (source)

Le débogueur Perl peut obtenir la commande de débogage du fichier et l'exécuter. Par exemple, créez le fichier appelé "debug_cmds" avec les commandes de débogage perl comme,

c
p $motif
q

Notez que R est utilisé pour redémarrer l'opération (inutile de quitter et de redémarrer le débogueur).
DB<7> R
DB<7> source debug_cmds
>> c
Entrée chaîne de recherche :perl
./perl_debugger.pl
Programme débogué terminé. Utilisez q pour quitter ou R pour redémarrer,
utilisez o inhibit_exit pour éviter l'arrêt après la fin du programme,
h q, h R ou h o pour obtenir des informations supplémentaires.
>> p $pattern
perl
>>q

Remarque :Si vous êtes relativement novice en perl, référez-vous à notre article précédent :20 astuces de programmation perl pour les débutants.

Résumé des commandes du débogueur Perl

Les options suivantes peuvent être utilisées une fois que vous entrez dans le débogueur perl.

  • h ou h h – pour la page d'aide
  • c - pour continuer depuis l'exécution en cours jusqu'au point d'arrêt, sinon jusqu'au nom du sous-programme ou au numéro de ligne,
  • p – pour afficher les valeurs des variables,
  • b – pour placer les points d'arrêt,
  • L - pour voir les points d'arrêt définis,
  • d – pour supprimer les points d'arrêt,
  • s - pour passer à l'exécution de la ligne suivante.
  • n - pour passer au-dessus de l'exécution de la ligne suivante, donc si la ligne suivante est un appel de sous-programme, il exécutera le sous-programme mais ne descendra pas dedans pour inspection.
  • fichier source - pour prendre les commandes de débogage du fichier.
  • l subname – pour voir les instructions d'exécution disponibles dans une sous-routine.
  • q – pour quitter le mode débogueur.

Linux
  1. Un tutoriel d'achèvement facile de Bash ??

  2. Cacti sur un serveur ISPConfig en 10 étapes faciles

  3. IlohaMail sur votre serveur ISPConfig en 10 étapes faciles

  4. TYPO3 Enterprise CMS sur un serveur ISPConfig en 10 étapes faciles

  5. Joomla CMS sur un serveur ISPConfig en 10 étapes faciles

Un tutoriel pratique pour utiliser le débogueur de projet GNU

Comment installer Elasticsearch sur Ubuntu 20.04 LTS - Étapes faciles

4 étapes faciles pour installer et configurer VMware Server 2 sur Linux

7 exemples Strace pour déboguer l'exécution d'un programme sous Linux

Comment installer Ubuntu Touch sur un appareil Android :un tutoriel facile pour les débutants

Comment jouer à des jeux sous Linux | Tutoriel facile pour débutant