=encoding iso-8859-1 =head1 NAME/NOM perldebug - Débogage de Perl =head1 DESCRIPTION Tout d'abord, avez-vous essayé d'utiliser l'option B<-w>E? =head1 Le Débogueur Perl Si vous invoquez Perl avec l'option B<-d>, votre script tournera dans le débogueur de sources Perl. Il fonctionne comme un environnement Perl interactif, demandant des commandes de débogage qui vous laissent examiner le code source, placer des points d'arrêt, obtenir des traces des états passés de la pile, changer les valeurs des variables, etc. C'est si pratique que vous lancez souvent le débogueur tout seul juste pour tester interactivement des constructions en Perl afin de voir ce qu'elles font. Par exempleE: $ perl -d -e 42 En Perl, le débogueur n'est pas un programme séparé à la façon dont c'est habituellement le cas dans l'environnement compilé typique. À la place, l'option B<-d> dit au compilateur d'insérer des informations sur le source dans les arbres d'analyse qu'il va donner à l'interpréteur. Cela signfie que votre code doit d'abord se compiler correctement pour que le débogueur travaille dessus. Puis lorsque l'interpréteur démarre, il précharge une bibliothèque Perl spéciale contenant le débogueur lui-même. Le programme s'arrêtera I la première instruction de son exécution (mais voyez plus bas en ce qui concerne les instructions pendant la compilation) et vous demandera d'entrer une commande de débogage. Contrairement à ce qu'on pourrait attendre, lorsque le débogueur s'arrête et vous montre une ligne de code, il affiche toujours la ligne qu'il est I d'exécuter, plutôt que celle qu'il vient juste d'exécuter. Toute commande non reconnue par le débogueur est directement exécutée Cuée) comme du code Perl dans le paquetage courant (Le débogueur utilise le paquetage DB pour gérer les informations sur son propre état). Tout espace blanc précédant ou suivant un texte entré au prompt du débogueur est d'abord supprimé avant tout autre traitement. Si une commande de débogage coïncide avec une fonction de votre propre programme, faites précéder simplement la fonction par quelque chose qui n'a pas l'air d'une commande de débogage, tel qu'un C<;>, ou peut-être un C<+>, ou en l'encadrant avec des parenthèses ou des accolades. =head2 Commandes du Débogueur Le débogueur comprend les commandes suivantesE: =over 12 =item h [commande] Affiche un message d'aide. Si vous fournissez une autre commande de débogage comme argument de la commande C, elle affichera uniquement la description de cette commande. L'argument spécial C produira un listage d'aide plus compact, conçu pour tenir en un seul écran. Si la sortie de la commande C (ou de toute commande, en fait) est plus longue que votre écran, faites-la précéder d'un symbole de tube pour qu'elle soit affichée page par page, comme dans DB> |h Vous pouvez changer le programme de pagination utilisé via la commande C. =item p expr Identique à C dans le paquetage courant. Cela signifie en particulier que, puisque c'est simplement la propre fonction C de Perl, les structures de données imbriquées et les objets ne sont pas affichés, contrairement à ce qui se passe avec la commande C. Le handle de fichier C est ouvert vers F, quelle que soit la redirection possible de STDOUT. =item x expr Évalue son expression dans un contexte de liste et affiche le résultat d'une façon joliment formatée. Les structures de données imbriquées sont affichées récursivement, contrairement à ce qui se passe avec la vraie fonction C. Voir L si vous aimeriez faire cela vous-même. Le format de sortie est gouverné par de multiples options décrites sous L<"Options Configurables">. =item V [pkg [vars]] Affiche la totalité (ou une partie) des variables du paquetage (avec par défaut C
) en utilisant un joli afficheur de données (les hachages montrent leurs couples clé-valeur de façon que vous voyiez qui correspond à qui, les caractères de contrôle sont rendus affichables, etc.). Assurez-vous de ne pas placer là de spécificateur de type (comme C<$>), mais juste les noms de symboles, comme ceciE: V DB filename line Utilisez C<~pattern> et C pour avoir des expressions rationnelles positives et négatives. Ceci est similaire au fait d'appeler la commande C pour chaque variable applicable. =item X [vars] Identique à C. =item T Produit une trace de la pile. Voir plus bas pour des détails sur sa sortie. =item s [expr] Pas à pas. Poursuit l'exécution jusqu'au début de l'instruction suivante, en descendant dans les appels de sous-programmes. Si une expression comprenant des appels de fonction est fournie, elle sera elle aussi suivie pas à pas. =item n [expr] Suivant. Exécute les appels de sous-programme, jusqu'à atteindre le début de la prochaine instruction. Si une expression comprenant des appels de fonction est fournie, ces fonctions seront exécutées avec des arrêts avant chaque instruction. =item r Continue jusqu'au retour du sous-programme courant. Affiche la valeur de retour si l'option C est mise (valeur par défaut). =item Répète la dernière commande C ou C. =item c [line|sub] Continue, en insérant facultativement un point d'arrêt valable une fois seulement à la ligne ou au sous-programme spécifié. =item l Liste la prochaine fenêtre de lignes. =item l min+incr Liste C lignes en commençant à C. =item l min-max Liste les lignes de C à C. C est synonyme de C<->. =item l line Liste une seule ligne. =item l subname Liste la première fenêtre de lignes en provenance d'un sous-programme. I peut être une variable contenant une référence de code. =item - Liste la précédente fenêtre de lignes. =item w [line] Liste une fenêtre (quelques lignes) autour de la ligne courante. =item . Retourne le pointeur de débogage interne sur la dernière ligne exécutée, et affiche cette ligne. =item f filename Passe à la visualisation d'un fichier différent ou d'une autre instruction C. Si I n'est pas un chemin complet tel que trouvé dans les valeurs de %INC, il est considéré être une expression rationnelle. =item /motif/ Recherche un motif (une expression rationnelle de Perl) vers l'avantE; le / final est optionnel. =item ?motif? Recherche un motif vers l'arrièreE; le ? final est optionnel. =item L Liste tous les points d'arrêts et toutes les actions. =item S [[!]regex] Liste les noms de sous-programmes [sauf] ceux correspondant à l'expression rationnelle. =item t Bascule le mode de traçage (voir aussi l'Coption C). =item t expr Trace l'exécution de expr. Voir L pour des exemples. =item b [ligne] [condition] Place un point d'arrêt avant la ligne donnée. Si ligne est omise, place un point d'arrêt sur la ligne qui est sur le point d'être exécutée. Si une condition est spécifiée, elle est évaluée chaque fois que l'instruction est atteinte : un point d'arrêt est réalisé seulement si la condition est vraie. Les points d'arrêt ne peuvent être placés que sur les lignes qui commencent une instruction exécutable. Les conditions n'utilisent pas BE: b 237 $x > 30 b 237 ++$count237 < 11 b 33 /pattern/i =item b subname [condition] Place un point d'arrêt avant la première ligne du sous-programme nommé. I peut être une variable contenant une référence de code (dans ce cas I n'est pas supporté). =item b postpone subname [condition] Place un point d'arrêt à la première ligne du sous-programme après sa compilation. =item b load filename Place un point d'arrêt avant la première ligne exécutée du I, qui doit être un chemin complet trouvé parmi les valeurs %INC. =item b compile subname Place un point d'arrêt à la première instruction exécutée après que le sous-programme spécifié ait été compilé. =item d [ligne] Supprime un point d'arrêt sur la I spécifiée. Si I est omis, supprime le point d'arrêt sur la ligne sur le point d'être exécutée. =item D Supprime tous les points d'arrêt définis. =item a [ligne] commande Fixe une action devant être effectuée avant que la ligne ne soit exécutée. Si I est omis, place une action sur la ligne sur le point d'être exécutée. La séquence d'opérations réalisées par le débogueur estE: 1. vérifie la présence d'un point d'arrêt sur cette ligne 2. affiche la ligne si nécessaire (trace) 3. effectue toutes les actions associées à cette ligne 4. interroge l'utilisateur en cas de point d'arrêt ou de pas à pas 5. évalue la ligne Par exemple, ceci affichera $foo chaque fois que la ligne 53 sera passéeE: a 53 print "DB FOUND $foo\n" =item a [ligne] Supprime une action de la ligne spécifiée. Si I est omis, supprime l'action de la ligne sur le point d'être exécutée. =item A Supprime toutes les actions définies. =item W expression Ajoute une expression de surveillance («EwatchE»E? NDT) globale. Nous espérons que vous savez ce que c'est, car elles sont supposées être évidentes. BE: il est bien trop facile de détruire vos actions de surveillance en omettant accidentellement l'I. =item W Supprime toutes les expressions de surveillance. =item O booloption ... Fixe chaque option booléenne listée à la valeur C<1>. =item O anyoption? ... Affiche la valeur d'une ou plusieurs options. =item O option=value ... Fixe la valeur d'une ou plusieurs options. Si la valeur contient des espaces, elle doit être mise entre guillemets. Par exemple, vous pouvez définir C pour appeler B avec ces options spécifiques. Vous pouvez utiliser des apostrophes ou des guillemets, mais si vous le faites, vous devez protéger toutes les occurrences d'apostrophes ou de guillemets (respectivement) dans la valeur, ainsi que les échappements les précédant immédiatement mais ne devant pas les protéger. En d'autres termes, vous suivez les règles de guillemettage indépendamment du symboleE; e.g.E: C or C. Pour des raisons historiques, le C<=value> est optionnel, mais a pour valeur par défaut 1 uniquement lorsque cette valeur est sûre -- c'est-à-dire principalement pour les options booléennes. Il vaut toujours mieux affecter une valeur spécifique en utilisant C<=>. L'C