40 votes

Existe-t-il un moyen d'activer le traçage en perl (équivalent à bash -x) ?

J'ai un script système en Perl. J'ai besoin d'un équivalent de bash -x pour déterminer ce qui ne va pas avec le script. Y a-t-il quelque chose d'équivalent ?

EDIT : Ce que Bash -x fait, c'est qu'il imprime chaque ligne au fur et à mesure de son évaluation. Cela rend le code de débogage qui manque juste une variable de chemin ou un fichier très facile.

45voto

Chas. Owens Points 40887

Jetez un œil à Devel::Trace ou Devel::ebug.

Compte tenu de ce programme nommé w.pl :

#!/usr/bin/perl

use strict;
use warnings;

my $answer = 42;

if ($answer == 6 * 9) {
    print "everything is running fine.\n";
} else {
    warn "there must be a bug somewhere...\n";
}

Vous pouvez utiliser Devel::Trace pour regarder l'exécution :

perl -d:Trace w.pl

Ce qui produit la sortie suivante :

>> w.pl:6: my $answer = 42;
>> w.pl:8: if ($answer == 6 * 9) {
>> w.pl:11:     warn "there must be a bug somewhere...\n";
there must be a bug somewhere...

8voto

Raghuram Points 26896

Vous devriez regarder "perl -d" (activer le débogueur) ou "perl -c" (vérifier votre script avant d'exécuter

8voto

mob Points 61524

Le module Devel::DumpTrace est disponible depuis 2011.

Utilisation de l'échantillon :

$ cat demo.pl
# demo.pl
# a demonstration of Devel::DumpTrace
$a = 1;
$b = 3;
$c = 2 * $a + 7 * $b;
@d = ($a, $b, $c + $b);

$ perl -d:DumpTrace demo.pl
>>>>> demo.pl:3:        $a:1 = 1;
>>>>> demo.pl:4:        $b:3 = 3;
>>>>> demo.pl:5:        $c:23 = 2 * $a:1 + 7 * $b:3;
>>>>> demo.pl:6:        @d:(1,3,26) = ($a:1, $b:3, $c:23 + $b:3);

2voto

Ruel Points 6140

Toujours inclure ces déclarations dans vos scripts perl :

use strict;
use warnings;

Si vous souhaitez le déboguer, utilisez le commutateur -d. Et voici les commandes : http://www.domainavenue.com/pl-debug.htm

J'espère que ça aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X