Englishfrançaisespagnol

Icône de favori OnWorks

perldebug - En ligne dans le Cloud

Exécutez perldebug dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande perldebug qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


perldebug - Débogage Perl

DESCRIPTION


Tout d'abord, avez-vous essayé d'utiliser le -w changer?

Si vous êtes nouveau sur le débogueur Perl, vous préférerez peut-être lire perldebtut, qui est un tutoriel
introduction au débogueur.

Notre Perl Debugger


Si vous invoquez Perl avec le -d switch, votre script s'exécute sous le débogueur de source Perl.
Cela fonctionne comme un environnement Perl interactif, demandant des commandes de débogueur qui permettent
vous examinez le code source, définissez des points d'arrêt, obtenez des traces de pile, modifiez les valeurs de
variables, etc. C'est tellement pratique que vous lancez souvent le débogueur tout seul
juste pour tester les constructions Perl de manière interactive pour voir ce qu'elles font. Par exemple:

$perl -d -e 42

En Perl, le débogueur n'est pas un programme séparé comme il l'est habituellement dans le
environnement compilé. Au lieu de cela, le -d flag dit au compilateur d'insérer la source
informations dans les arbres d'analyse qu'il est sur le point de transmettre à l'interprète. Cela signifie
votre code doit d'abord compiler correctement pour que le débogueur fonctionne dessus. Puis quand le
l'interpréteur démarre, il précharge un fichier de bibliothèque Perl spécial contenant le débogueur.

Le programme s'arrêtera bon avant la première instruction exécutable d'exécution (mais voir ci-dessous
concernant les instructions de compilation) et vous demande d'entrer une commande de débogueur. Contrairement à
attentes populaires, chaque fois que le débogueur s'arrête et vous montre une ligne de code, il
affiche la ligne c'est à propos à exécuter, plutôt que celui qu'il vient d'exécuter.

Toute commande non reconnue par le débogueur est directement exécutée ("eval"'d) en tant que code Perl dans
le paquet actuel. (Le débogueur utilise le package DB pour conserver son propre état
informations.)

Notez que ledit "eval" est lié par une portée implicite. En conséquence, tout nouveau
la variable lexicale ou tout contenu modifié du tampon de capture est perdu après l'eval. Les
débogueur est un environnement agréable pour apprendre Perl, mais si vous expérimentez de manière interactive en utilisant
matériel qui devrait être dans la même portée, remplissez-le sur une seule ligne.

Pour tout texte entré à l'invite du débogueur, les espaces blancs de début et de fin sont d'abord
dépouillé avant un traitement ultérieur. Si une commande du débogueur coïncide avec une fonction dans
votre propre programme, faites simplement précéder la fonction par quelque chose qui ne ressemble pas à un
commande du débogueur, telle qu'un ";" de début ou peut-être un "+", ou en l'enveloppant avec
parenthèses ou accolades.

appel le Debugger
Il existe plusieurs façons d'appeler le débogueur :

perl -d nom_programme
Sur le programme donné identifié par "nom_programme".

perl -d -e 0
Fournissez de manière interactive une "expression" arbitraire en utilisant "-e".

perl -d:ptkdb nom_programme
Déboguez un programme donné via l'interface graphique "Devel::ptkdb".

perl -dt nom_programme_threadé
Déboguer un programme donné à l'aide de threads (expérimental).

Debugger Commandes
Le débogueur interactif comprend les commandes suivantes :

h Imprime un message d'aide récapitulatif

h [commande] Imprime un message d'aide pour la commande de débogueur donnée.

hh L'argument spécial de "hh" produit la page d'aide entière, ce qui est assez
longtemps.

Si la sortie de la commande "hh" (ou de toute commande, d'ailleurs) défile
passé votre écran, faites précéder la commande d'un symbole de barre verticale pour qu'elle soit
parcourir votre pager, comme dans

BD> |hh

Vous pouvez changer le pager qui est utilisé via la commande "o pager=...".

p expr Identique à "print {$DB::OUT} expr" dans le package courant. En particulier,
parce qu'il ne s'agit que de la fonction "print" de Perl, cela signifie que les données imbriquées
les structures et les objets ne sont pas vidés, contrairement à la commande "x".

Le descripteur de fichier "DB::OUT" est ouvert pour /dev/tty, quel que soit l'endroit où STDOUT peut
être redirigé vers.

x [profondeur max] expr
Évalue son expression dans le contexte de la liste et vide le résultat dans un joli-
mode imprimée. Les structures de données imbriquées sont imprimées de manière récursive, contrairement
la vraie fonction "print" de Perl. Lorsque vous videz des hachages, vous allez probablement
préférez 'x \%h' plutôt que 'x %h'. Voir Dumpvalue si vous souhaitez faire cela
toi même.

Le format de sortie est régi par plusieurs options décrites sous
"Options configurables".

Si le "maxdepth" est inclus, il doit s'agir d'un chiffre N; la valeur est sous-évaluée
uniquement N niveaux profonds, comme si l'option "dumpDepth" avait été temporairement définie sur
N.

V [paquet [vars]]
Afficher toutes (ou certaines) les variables dans le package (par défaut à "main") à l'aide d'un data
jolie-imprimante (les hachages montrent leurs clés et leurs valeurs pour que vous voyiez quoi,
les caractères de contrôle sont rendus imprimables, etc.). Assurez-vous de ne pas mettre le
spécificateur de type (comme "$") ici, juste les noms de symboles, comme ceci :

Ligne de nom de fichier V DB

Utilisez "~pattern" et "!pattern" pour les expressions régulières positives et négatives.

Ceci est similaire à l'appel de la commande "x" sur chaque var applicable.

X [vars] Identique à "V currentpackage [vars]".

y [niveau [vars]]
Afficher toutes (ou certaines) les variables lexicales (mnémonique : variables "mY") dans la
portée actuelle ou niveau des portées plus élevées. Vous pouvez limiter les variables que vous
voir avec vars qui fonctionne exactement comme pour les commandes "V" et "X".
Nécessite le module "PadWalker" version 0.08 ou supérieure ; avertira si cela
n'est pas installé. La sortie est joliment imprimée dans le même style que pour "V" et
le format est contrôlé par les mêmes options.

T Produire une trace de pile. Voir ci-dessous pour plus de détails sur sa sortie.

s [expr] Pas simple. Exécute jusqu'au début d'une autre instruction, décroissant
en appels de sous-programme. Si une expression est fournie qui inclut la fonction
appels, elle aussi sera en une seule étape.

n [expr] Suivant. S'exécute sur les appels de sous-programme, jusqu'au début du prochain
déclaration. Si une expression est fournie qui inclut des appels de fonction, ceux-ci
les fonctions seront exécutées avec des arrêts avant chaque instruction.

r Continuer jusqu'au retour du sous-programme en cours. Vider la valeur de retour
si l'option "PrintRet" est définie (par défaut).

Répétez la dernière commande "n" ou "s".

c [ligne|sous]
Continuer, en insérant éventuellement un point d'arrêt à usage unique au
ligne ou sous-programme.

l Lister la fenêtre de lignes suivante.

l min+incr Liste les lignes "incr+1" commençant par "min".

l min-max Liste les lignes "min" à "max". "l -" est synonyme de "-".

l line Liste une seule ligne.

l subname Liste la première fenêtre des lignes du sous-programme. sous-nom peut être une variable qui
contient une référence de code.

- Liste la fenêtre précédente de lignes.

v [ligne] Affiche quelques lignes de code autour de la ligne courante.

. Renvoie le pointeur du débogueur interne sur la dernière ligne exécutée et imprime
cette ligne.

f filename Bascule vers l'affichage d'un fichier ou d'une instruction "eval" différent. Si nom de fichier n'est pas un
chemin d'accès complet trouvé dans les valeurs de %INC, il est considéré comme une expression régulière.

Les chaînes "évaluées" (lorsqu'elles sont accessibles) sont considérées comme des noms de fichiers : "f (eval
7)" et "f eval 7\b" accèdent au corps de la 7ème chaîne "eval" éditée (dans l'ordre
d'exécution). Les corps du "eval" actuellement exécuté et du "eval"ed
les chaînes qui définissent les sous-programmes sont enregistrées et donc accessibles.

/pattern/ Recherche en avant du pattern (une expression régulière Perl) ; final / est facultatif. La recherche
est insensible à la casse par défaut.

?modèle? Recherche en arrière pour le motif ; finale ? est facultatif. La recherche est cas-
insensible par défaut.

L [abw] Liste (par défaut toutes) les actions, les points d'arrêt et les expressions de surveillance

S [[!]expression régulière]
Liste les noms de sous-programmes [ne correspondant pas] à l'expression régulière.

t [n] Bascule en mode trace (voir aussi l'option "AutoTrace"). L'argument optionnel est le
nombre maximum de niveaux à tracer en dessous du niveau actuel ; quelque chose de plus profond que
ce sera silencieux.

t [n] expr Trace jusqu'à l'exécution de "expr". Le premier argument facultatif est le maximum
nombre de niveaux à tracer en dessous du niveau actuel ; quelque chose de plus profond que ça
sera silencieux. Voir « Exemples de sortie de liste de trames » dans perldebguts pour
exemples.

b Définit le point d'arrêt sur la ligne actuelle

b [ligne] [condition]
Définir un point d'arrêt avant la ligne donnée. Si une condition est spécifiée, c'est
évalué à chaque fois que l'instruction est atteinte : un point d'arrêt n'est pris que si
la condition est vraie. Les points d'arrêt ne peuvent être définis que sur les lignes qui commencent un
instruction exécutable. Les conditions n'utilisent pas "if":

b 237 x $ > 30
b 237 ++$compte237 < 11
b 33 /motif/i

Si le numéro de ligne est ".", définit un point d'arrêt sur la ligne actuelle :

b. $n > 100

b [fichier]:[ligne] [condition]
Définir un point d'arrêt avant la ligne donnée dans un fichier (éventuellement différent). Si un
condition est spécifiée, elle est évaluée à chaque fois que l'instruction est atteinte :
Le point d'arrêt n'est pris que si la condition est vraie. Les points d'arrêt ne peuvent être
défini sur les lignes qui commencent une instruction exécutable. Les conditions n'utilisent pas "if":

b lib/MonModule.pm:237 $x > 30
b /usr/lib/perl5/site_perl/CGI.pm:100 ++$count100 < 11

b sous-nom [condition]
Placez un point d'arrêt avant la première ligne du sous-programme nommé. sous-nom Au cours de cette réunion, Matthew a obtenu de précieux conseils et Linda lui a demandé de la tenir au courant de ses progrès.
être une variable contenant une référence de code (dans ce cas condition n'est pas
prise en charge).

b reporter le sous-nom [condition]
Définir un point d'arrêt à la première ligne du sous-programme après sa compilation.

b charger le nom du fichier
Définir un point d'arrêt avant la première ligne exécutée du nom de fichier, qui devrait
être un chemin d'accès complet trouvé parmi les valeurs %INC.

b compiler le sous-nom
Définit un point d'arrêt avant la première instruction exécutée après le spécifié
le sous-programme est compilé.

Ligne B Supprimer un point d'arrêt du en ligne.

B * Supprimer tous les points d'arrêt installés.

désactiver [fichier]:[ligne]
Désactivez le point d'arrêt pour qu'il n'arrête pas l'exécution du programme.
Les points d'arrêt sont activés par défaut et peuvent être réactivés à l'aide du bouton « activer »
commander.

désactiver [ligne]
Désactivez le point d'arrêt pour qu'il n'arrête pas l'exécution du programme.
Les points d'arrêt sont activés par défaut et peuvent être réactivés à l'aide du bouton « activer »
commander.

Ceci est fait pour un point d'arrêt dans le fichier en cours.

activer [fichier]:[ligne]
Activez le point d'arrêt pour qu'il arrête l'exécution du programme.

activer [ligne]
Activez le point d'arrêt pour qu'il arrête l'exécution du programme.

Ceci est fait pour un point d'arrêt dans le fichier en cours.

une commande [ligne]
Définissez une action à effectuer avant l'exécution de la ligne. Si en ligne est omis, défini
une action sur la ligne sur le point d'être exécutée. La séquence des étapes suivies par
le débogueur est

1. rechercher un point d'arrêt sur cette ligne
2. imprimer la ligne si nécessaire (tracé)
3. effectuer toutes les actions associées à cette ligne
4. inviter l'utilisateur s'il est à un point d'arrêt ou en une seule étape
5. évaluer la ligne

Par exemple, cela affichera $foo à chaque passage de la ligne 53 :

a 53 print "DB TROUVÉ $foo\n"

Une ligne Supprime une action de la ligne spécifiée.

A * Supprimer toutes les actions installées.

w expr Ajoute une expression de surveillance globale. Chaque fois qu'un global observé change le débogueur
s'arrêtera et affichera les anciennes et les nouvelles valeurs.

W expr Supprimer l'expression de surveillance

W * Supprimer toutes les expressions de surveillance.

o Afficher toutes les options.

o option booléenne ...
Définissez chaque option booléenne répertoriée sur la valeur 1.

n'importe quelle option ? ...
Imprimez la valeur d'une ou plusieurs options.

o option=valeur ...
Définissez la valeur d'une ou plusieurs options. Si la valeur a des espaces internes,
il faut le citer. Par exemple, vous pouvez définir "o pager="less -MQeicsNfr""
appeler moins avec ces options spécifiques. Vous pouvez utiliser soit simple soit double
guillemets, mais si vous le faites, vous devez échapper à toutes les instances intégrées du même type de
citation avec laquelle vous avez commencé, ainsi que toute évasion qui
précèdent cette citation mais qui ne sont pas destinés à échapper à la citation elle-même. Dans
en d'autres termes, vous suivez les règles des guillemets simples, quelle que soit la citation ; ex : "o
option='ce n'est pas mal'" ou "o option="Elle a dit, \"N'est-ce pas ?\""".

Pour des raisons historiques, le "=valeur" est facultatif, mais vaut par défaut 1 uniquement lorsque
il est sûr de le faire, c'est-à-dire principalement pour les options booléennes. c'est toujours mieux
pour attribuer une valeur spécifique à l'aide de "=". L'"option" peut être abrégée, mais
pour plus de clarté ne devrait probablement pas être. Plusieurs options peuvent être définies ensemble. Voir
"Options configurables" pour une liste de celles-ci.

< ? Répertoriez toutes les actions de commande Perl pré-invites.

< [ commande ]
Définissez une action (commande Perl) pour qu'elle se produise avant chaque invite du débogueur. Un multi-
La commande de ligne peut être entrée en inversant les nouvelles lignes.

< * Supprimer toutes les actions de commande Perl pré-invite.

<< commande Ajoute une action (commande Perl) devant se produire avant chaque invite du débogueur. Un multi-
La commande de ligne peut être entrée en retournant les nouvelles lignes.

> ? Répertoriez les actions de commande Perl post-invite.

> commande Définir une action (commande Perl) pour qu'elle se produise après l'invite lorsque vous venez de donner
une commande pour revenir à l'exécution du script. Une commande multiligne peut être
entré en inversant les nouvelles lignes (nous parions que vous n'auriez pas pu le deviner en
à présent).

> * Supprimer toutes les actions de commande Perl post-invite.

>> commande Ajoute une action (commande Perl) à effectuer après l'invite lorsque vous venez de
reçu une commande pour revenir à l'exécution du script. Une commande multiligne peut
être entré en inversant les nouvelles lignes.

{ ? Répertoriez les commandes du débogueur de pré-invite.

{ [ commande ]
Définissez une action (commande du débogueur) pour qu'elle se produise avant chaque invite du débogueur. UNE
la commande multiligne peut être entrée de la manière habituelle.

Étant donné que cette commande est en quelque sorte nouvelle, un avertissement est émis si vous apparaissez
d'avoir accidentellement entré un bloc à la place. Si c'est ce que tu veux faire,
écrivez-le comme avec ";{ ... }" ou même "do { ... }".

{ * Supprimer toutes les commandes du débogueur de pré-invite.

{{ commande Ajoute une action (commande du débogueur) devant se produire avant chaque invite du débogueur. UNE
une commande multiligne peut être entrée, si vous pouvez deviner comment : voir ci-dessus.

! nombre Refaire une commande précédente (par défaut la commande précédente).

! -number Rétablir la commande précédente de la numéro-ième.

! pattern Refaire la dernière commande qui a commencé par pattern. Voir "o rappelerCommand", aussi.

!! cmd Exécuter cmd dans un sous-processus (lit à partir de DB::IN, écrit dans DB::OUT) Voir "o
shellBang", également. Notez que le shell actuel de l'utilisateur (enfin, leur $ENV{SHELL}
variable) sera utilisé, ce qui peut interférer avec une interprétation correcte de la sortie
informations d'état ou de signal et de vidage mémoire.

fichier source Lire et exécuter les commandes du débogueur à partir de filet. filet peut lui-même contenir
commandes "sources".

Numéro H Affiche les n dernières commandes. Seules les commandes de plus d'un caractère sont répertoriées.
If nombre est omis, listez-les tous.

q ou ^D Quitter. ("quit" ne fonctionne pas pour cela, sauf si vous avez créé un alias) C'est le
seul moyen pris en charge pour quitter le débogueur, bien que taper "exit" deux fois puisse
.

Définissez l'option "inhibit_exit" sur 0 si vous voulez pouvoir quitter la fin
le script. Vous devrez peut-être également définir $finished sur 0 si vous souhaitez avancer
par la destruction globale.

R Redémarrez le débogueur en "exec()" dans une nouvelle session. Nous essayons de maintenir votre
l'historique à travers cela, mais les paramètres internes et les options de ligne de commande peuvent être
perdu.

Les paramètres suivants sont actuellement conservés : historique, points d'arrêt, actions,
les options du débogueur et les options de la ligne de commande Perl -w, -I et -e.

|dbcmd Exécutez la commande du débogueur en redirigeant DB::OUT dans votre pager actuel.

||dbcmd Identique à "|dbcmd" mais DB::OUT est également "sélectionné" temporairement.

= [valeur d'alias]
Définissez un alias de commande, comme

= quitter q

ou répertorier les alias actuels.

commande Exécute la commande en tant qu'instruction Perl. Un point-virgule de fin sera fourni.
Si l'instruction Perl serait autrement confondue avec un débogueur Perl, utilisez un
point-virgule de début aussi.

m expr Liste les méthodes pouvant être appelées sur le résultat de l'expression évaluée.
L'expression peut être évaluée par rapport à une référence à un objet béni, ou à un
nom du paquet.

M Afficher tous les modules chargés et leurs versions.

homme [page de manuel]
Malgré son nom, cela appelle la visionneuse de documentation par défaut de votre système sur le
page donnée, ou sur le spectateur lui-même si page de manuel est omis. Si ce spectateur est
man, les informations "Config" actuelles sont utilisées pour appeler man en utilisant le bon
MANPATH ou -M chemin de l'homme option. Échec des recherches de la forme « XXX » qui correspondent
pages de manuel connues du formulaire perlXXX sera réessayé. Cela vous permet de taper "man
debug" ou "man op" depuis le débogueur.

Sur des systèmes traditionnellement dépourvus d'un man commande, le débogueur appelle
perldoc. Parfois, cette détermination est incorrecte en raison de récalcitrants
vendeurs ou plutôt, plus heureusement, aux utilisateurs entreprenants. Si vous tombez dans
l'une ou l'autre catégorie, définissez simplement manuellement la variable $DB::doccmd sur n'importe quel visualiseur
pour afficher la documentation Perl sur votre système. Cela peut être défini dans un fichier rc,
ou par affectation directe. Nous attendons toujours un exemple fonctionnel de
quelque chose comme:

$DB::doccmd = 'netscape -remote http://something.here/';

configurable Options
Le débogueur a de nombreuses options paramétrables à l'aide de la commande "o", soit de manière interactive, soit
à partir de l'environnement ou d'un fichier rc. (./.perldb ou ~/.perldb sous Unix.)

"recallCommand", "ShellBang"
Les caractères utilisés pour rappeler une commande ou générer un shell. Par défaut, les deux
sont mis à "!", ce qui est regrettable.

"pager" Programme à utiliser pour la sortie des commandes envoyées par pager (celles commençant par un "|"
caractère.) Par défaut, $ENV{PAGER} sera utilisé. Parce que le débogueur utilise
vos caractéristiques terminales actuelles pour les caractères gras et soulignés, si le
le pager ne transmet pas les séquences d'échappement inchangées, la sortie de certains
les commandes du débogueur ne seront pas lisibles lorsqu'elles seront envoyées via le pager.

"tkRunning" Exécutez Tk pendant l'invite (avec ReadLine).

"signalLevel", "warnLevel", "dieLevel"
Niveau de verbosité. Par défaut, le débogueur laisse vos exceptions et
avertissements uniquement, car les modifier peut casser les programmes en cours d'exécution.
Il tentera d'imprimer un message lorsque les signaux INT, BUS ou SEGV non détectés
arrivée. (Mais voir la mention des signaux dans "BUGS" ci-dessous.)

Pour désactiver ce mode sans échec par défaut, définissez ces valeurs sur une valeur supérieure à
0. Au niveau 1, vous obtenez des backtraces dès réception de tout type d'avertissement
(c'est souvent ennuyeux) ou d'exception (c'est souvent précieux).
Malheureusement, le débogueur ne peut pas discerner les exceptions fatales des non fatales
ceux. Si "dieLevel" est pair 1, alors vos exceptions non fatales sont également tracées
et modifiés sans ménagement s'ils provenaient de cordes « évaluées » ou de tout autre
sorte de "eval" dans les modules que vous essayez de charger. Si "dieLevel" est égal à 2,
le débogueur ne se soucie pas d'où ils viennent : il usurpe votre exception
gestionnaire et imprime une trace, puis modifie toutes les exceptions avec ses propres
embellissements. Cela peut peut-être être utile à certaines fins de traçage, mais
a tendance à détruire désespérément tout programme qui prend sa gestion des exceptions
sérieusement.

Mode Trace "AutoTrace" (similaire à la commande "t", mais peut être mis dans "PERLDB_OPTS").

"LineInfo" Fichier ou pipe vers lequel imprimer les informations du numéro de ligne. Si c'est un tuyau (disons,
"|visual_perl_db"), puis un court message est utilisé. C'est le mécanisme utilisé
pour interagir avec un éditeur esclave ou un débogueur visuel, tel que le "vi" spécial
ou les hooks "emacs", ou le débogueur graphique "ddd".

"inhibit_exit"
Si 0, permet pas à pas de rabais la fin du scénario.

"PrintRet" Affiche la valeur de retour après la commande "r" si elle est définie (par défaut).

"ornaments" Affecte l'apparence de l'écran de la ligne de commande (voir Term::ReadLine). Il y a
actuellement aucun moyen de les désactiver, ce qui peut rendre certaines sorties illisibles sur
certains écrans, ou avec des téléavertisseurs. Ceci est considéré comme un bug.

"frame" Affecte l'impression des messages à l'entrée et à la sortie des sous-programmes. Si
"frame & 2" est faux, les messages sont imprimés à l'entrée uniquement. (Impression à la sortie
peut être utile s'il est intercalé avec d'autres messages.)

Si "frame & 4", les arguments des fonctions sont affichés, plus le contexte et l'appelant
Info. Si "frame & 8", surchargé "stringify" et "tie"d "FETCH" est activé sur
les arguments imprimés. Si "frame & 16", la valeur de retour du sous-programme
est imprimé.

La longueur à laquelle la liste d'arguments est tronquée est régie par la prochaine
option:

"maxTraceLen"
Longueur pour tronquer la liste d'arguments lorsque le bit 4 de l'option "frame" est défini.

"la taille de la fenêtre"
Modifiez la taille de la fenêtre de liste de codes (la valeur par défaut est de 10 lignes).

Les options suivantes affectent ce qui se passe avec les commandes "V", "X" et "x" :

"arrayDepth", "hashDepth"
N'affiche que les N premiers éléments ('' pour tous).

"dumpDepth" Limite la profondeur de récursivité à N niveaux lors du vidage des structures. Valeurs négatives
sont interprétés comme l'infini. Par défaut : infini.

"compactDump", "veryCompact"
Modifiez le style du tableau et de la sortie de hachage. Si "compactDump", un tableau court peut
être imprimé sur une seule ligne.

"globPrint" Indique s'il faut imprimer le contenu des globs.

"DumpDBFiles"
Vider les tableaux contenant les fichiers débogués.

"Dump Packages"
Vider les tables de symboles des packages.

"DumpRéutilisé"
Vider le contenu des adresses « réutilisées ».

"quote", "HighBit", "undefPrint"
Changer le style de vidage de chaîne. La valeur par défaut pour "quote" est "auto" ; une
peut activer le format entre guillemets doubles ou simples en le définissant sur """ ou
"'", respectivement. Par défaut, les caractères avec leur bit de poids fort sont imprimés
textuellement.

"UsageOnly" Vidage rudimentaire de l'utilisation de la mémoire par paquet. Calcule la taille totale des chaînes
trouvé dans les variables du package. Cela n'inclut pas les lexicaux dans un
la portée du fichier du module, ou perdu dans les fermetures.

"HistFile" Le chemin du fichier à partir duquel l'historique (en supposant un Term::ReadLine utilisable
backend) sera lu au démarrage du débogueur, et dans lequel il sera enregistré
à l'arrêt (pour la persistance entre les sessions). Concept similaire à celui de Bash
fichier ".bash_history".

"HistSize" Le nombre de lignes enregistrées dans l'historique (en supposant "HistFile" ci-dessus).

Une fois le fichier rc lu, le débogueur lit la variable d'environnement $ENV{PERLDB_OPTS}
et l'analyse comme le reste d'une ligne "O ..." comme on pourrait entrer dans le débogueur
rapide. Vous pouvez placer les options d'initialisation "TTY", "noTTY", "ReadLine", et
"Non Stop" là-bas.

Si votre fichier rc contient :

parse_options("NonStop=1 LineInfo=db.out AutoTrace");

alors votre script s'exécutera sans intervention humaine, mettant les informations de trace dans le
filet db.out. (Si vous l'interrompez, vous feriez mieux de réinitialiser "LineInfo" à /dev/tty si tu
attendez-vous à voir quoi que ce soit.)

"TTY" Le TTY à utiliser pour le débogage des E/S.

"noTTY" Si défini, le débogueur passe en mode "NonStop" et ne se connecte pas à un TTY.
En cas d'interruption (ou si le contrôle passe au débogueur via le paramétrage explicite de
$DB::signal ou $DB::single du script Perl), il se connecte à un TTY
spécifié dans l'option "TTY" au démarrage, ou à un tty trouvé à l'exécution en utilisant
le module "Term::Rendezvous" de votre choix.

Ce module doit implémenter une méthode nommée "new" qui renvoie un objet avec
deux méthodes : "IN" et "OUT". Ceux-ci devraient renvoyer des descripteurs de fichiers à utiliser pour
débogage d'entrée et de sortie en conséquence. La "nouvelle" méthode devrait inspecter
un argument contenant la valeur de $ENV{PERLDB_NOTTY} au démarrage, ou
"$ENV{HOME}/.perldbtty$$" sinon. Ce fichier n'est pas inspecté pour le bon
propriété, de sorte que les risques pour la sécurité sont théoriquement possibles.

"ReadLine" Si false, la prise en charge de readline dans le débogueur est désactivée afin de déboguer
applications qui utilisent elles-mêmes ReadLine.

"NonStop" Si défini, le débogueur passe en mode non interactif jusqu'à ce qu'il soit interrompu, ou
par programmation en définissant $DB::signal ou $DB::single.

Voici un exemple d'utilisation de la variable $ENV{PERLDB_OPTS} :

$ PERLDB_OPTS="NonStop frame=2" perl -d monprogramme

Cela lancera le script monprogramme sans intervention humaine, impression de l'arborescence des appels
avec points d'entrée et de sortie. Notez que "NonStop=1 frame=2" est équivalent à "N f=2", et
qu'à l'origine, les options pouvaient être abrégées de manière unique par la première lettre (modulo le
options "Dump*"). Il est néanmoins recommandé de toujours les épeler en toutes lettres
pour la lisibilité et la compatibilité future.

D'autres exemples incluent

$ PERLDB_OPTS="NonStop LineInfo=cadre de liste=2" perl -d monprogramme

qui exécute le script de manière non interactive, imprimant des informations sur chaque entrée dans un sous-programme et
chaque ligne exécutée dans le fichier nommé inscription. (Si vous l'interrompez, vous feriez mieux
réinitialiser "LineInfo" à quelque chose d'"interactif" !)

D'autres exemples incluent (en utilisant la syntaxe de shell standard pour afficher la variable d'environnement
Les paramètres):

$ ( PERLDB_OPTS="NonStop frame=1 AutoTrace LineInfo=tperl.out"
perl -d monprogramme )

ce qui peut être utile pour déboguer un programme qui utilise lui-même "Term::ReadLine". Ne pas
oubliez de détacher votre shell du TTY dans la fenêtre qui correspond à /dev/ttyXX,
disons, en émettant une commande comme

$ dormir 1000000

Voir "Debugger Internals" dans perldebguts pour plus de détails.

Debugger Entrée / Sortie
Invite L'invite du débogueur est quelque chose comme

BD<8>

ou encore

BD<<17>>

où ce numéro est le numéro de commande, et que vous utiliseriez pour accéder avec le
intégré csh-comme mécanisme d'histoire. Par exemple, "!17" répétera la commande
numéro 17. La profondeur des crochets angulaires indique la profondeur d'imbrication du
débogueur. Vous pourriez obtenir plus d'un jeu de parenthèses, par exemple, si vous
déjà à un point d'arrêt, puis a affiché le résultat d'un appel de fonction qui lui-même
a un point d'arrêt, ou vous entrez dans une expression via la commande "s/n/t expression".

Commandes multilignes
Si vous souhaitez saisir une commande multiligne, telle qu'une définition de sous-programme avec
plusieurs instructions ou un format, échappez le saut de ligne qui terminerait normalement le
commande du débogueur avec une barre oblique inverse. Voici un exemple :

DB<1> pour (1..4) { \
suite : imprimer "ok\n" ; \
suite : }
ok
ok
ok
ok

Notez que cette affaire d'échappement d'une nouvelle ligne est spécifique aux commandes interactives
tapé dans le débogueur.

Trace de pile
Voici un exemple de ce à quoi pourrait ressembler un backtrace de pile via la commande "T":

$ = main::infested appelé depuis le fichier 'Ambulation.pm' ligne 10
@ = Ambulation::legs(1, 2, 3, 4) appelé depuis le fichier 'camel_flea' ligne 7
$ = main::pests('bactrian', 4) appelé depuis le fichier 'camel_flea' ligne 4

Le caractère de gauche en haut indique le contexte dans lequel la fonction a été
appelé, avec "$" et "@" signifiant respectivement des contextes scalaires ou de liste, et "."
signifiant contexte vide (qui est en fait une sorte de contexte scalaire). L'affichage
ci-dessus dit que vous étiez dans la fonction "main::infested" lorsque vous avez exécuté la pile
dump, et qu'il a été appelé dans un contexte scalaire à partir de la ligne 10 du fichier
Déambulation.pm, mais sans aucun argument, ce qui signifie qu'il a été appelé comme
&infesté. Le cadre de pile suivant montre que la fonction "Déambulation::legs" a été
appelé dans le contexte de la liste à partir du chameau_puce fichier avec quatre arguments. Le dernier
le cadre de la pile montre que "main::pests" a été appelé dans un contexte scalaire, également à partir de
chameau_puce, mais à partir de la ligne 4.

Si vous exécutez la commande "T" depuis une instruction "use" active, le
backtrace contiendra à la fois un cadre "require" et un cadre "eval".

Format de liste de lignes
Cela montre les types de sortie que la commande "l" peut produire :

DB<<13>> l
101 : @i{@i} = ();
102:b @isa{@i,$pack} = ()
103 if(existe $i{$prevpack} || existe $isa{$pack});
104}
105
106 next
107==> if(existe $isa{$pack});
108
109:a if ($extra--> 0) {
110 : %isa = ($pack,1) ;

Les lignes sécables sont signalées par ":". Les lignes avec des points d'arrêt sont marquées par "b" et
ceux avec des actions par "a". La ligne qui est sur le point d'être exécutée est marquée par
"==>".

Veuillez noter que le code dans les listes de débogage peut ne pas ressembler à votre
code source d'origine. Les directives de ligne et les filtres de source externes peuvent altérer le
code avant que Perl ne le voie, provoquant le déplacement du code de ses positions d'origine ou
sous des formes totalement différentes.

Liste des cadres
Lorsque l'option "frame" est définie, le débogueur imprimera entré (et éventuellement
terminé) sous-routines dans différents styles. Voir perldebguts pendant incroyablement longtemps
exemples de ceux-ci.

Débogage Temps de compilation Déclarations
Si vous avez des instructions exécutables à la compilation (comme du code dans BEGIN, UNITCHECK et
CHECK ou instructions "use"), celles-ci pas être arrêté par le débogueur, bien que
Les blocs "require" et INIT le feront, et les instructions de compilation peuvent être tracées avec le
Option "AutoTrace" définie dans "PERLDB_OPTS"). Cependant, à partir de votre propre code Perl, vous pouvez
retransférez le contrôle au débogueur à l'aide de l'instruction suivante, qui est inoffensive si
le débogueur ne s'exécute pas :

$DB::single = 1 ;

Si vous définissez $DB::single sur 2, cela équivaut à avoir juste tapé la commande "n", alors que
une valeur de 1 signifie la commande "s". La variable $DB::trace doit être définie sur 1 pour
simuler avoir tapé la commande "t".

Une autre façon de déboguer le code de compilation est de démarrer le débogueur, de définir un point d'arrêt sur le
charge d'un module :

DB<7> b charge f:/perllib/lib/Carp.pm
S'arrêtera au chargement de 'f:/perllib/lib/Carp.pm'.

puis redémarrez le débogueur à l'aide de la commande "R" (si possible). On peut utiliser "b compiler
sous-nom" dans le même but.

Debugger Personnalisation
Le débogueur contient probablement suffisamment de crochets de configuration que vous n'aurez jamais à utiliser
modifiez-le vous-même. Vous pouvez modifier le comportement du débogueur à partir du débogueur
à l'aide de sa commande "o", depuis la ligne de commande via la variable d'environnement "PERLDB_OPTS",
et à partir de fichiers de personnalisation.

Vous pouvez faire une certaine personnalisation en configurant un .perldb fichier, qui contient l'initialisation
code. Par exemple, vous pouvez créer des alias comme ceux-ci (le dernier est celui auquel les gens s'attendent
être là):

$DB::alias{'len'} = 's/^len(.*)/p length($1)/';
$DB::alias{'stop'} = 's/^stop (at|in)/b/';
$DB::alias{'ps'} = 's/^ps\b/p scalaire /';
$DB::alias{'quit'} = 's/^quit(\s*)/exit/';

Vous pouvez modifier les options de .perldb en utilisant des appels comme celui-ci ;

parse_options("NonStop=1 LineInfo=db.out AutoTrace=1 frame=2");

Le code est exécuté dans le package "DB". Noter que .perldb est traité avant
traitement de "PERLDB_OPTS". Si .perldb définit le sous-programme "afterinit", cette fonction est
appelé après la fin de l'initialisation du débogueur. .perldb peut être contenu dans le courant
répertoire, ou dans le répertoire de base. Parce que ce fichier provient de Perl et peut
contenir des commandes arbitraires, pour des raisons de sécurité, il doit appartenir au superutilisateur ou au
utilisateur actuel et accessible en écriture à personne d'autre que son propriétaire.

Vous pouvez simuler l'entrée TTY dans le débogueur en ajoutant des commandes arbitraires à @DB::typeahead. Pour
exemple, votre .perldb le fichier peut contenir :

sub afterinit { push @DB::typeahead, "b 4", "b 6"; }

Ce qui tenterait de définir des points d'arrêt sur les lignes 4 et 6 immédiatement après le débogueur
initialisation. Notez que @DB::typeahead n'est pas une interface prise en charge et est sujette à
changement dans les prochaines versions.

Si vous souhaitez modifier le débogueur, copiez perl5db.pl de la bibliothèque Perl à un autre nom
et piratez-le à votre guise. Vous aurez alors envie de paramétrer votre environnement "PERL5DB"
variable pour dire quelque chose comme ceci :

COMMENCER { exiger "myperl5db.pl" }

En dernier recours, vous pouvez également utiliser "PERL5DB" pour personnaliser le débogueur en
définir des variables internes ou appeler des fonctions de débogueur.

Notez que toutes les variables et fonctions qui ne sont pas documentées dans ce document (ou dans
perldebguts) sont destinés à un usage interne uniquement et, en tant que tels, sont susceptibles de changer
sans préavis.

readline Assistance / Histoire in le Debugger
À la livraison, le seul historique de ligne de commande fourni est un historique simpliste qui vérifie
principaux points d'exclamation. Cependant, si vous installez Term::ReadKey et Term::ReadLine
modules de CPAN (tels que Term::ReadLine::Gnu, Term::ReadLine::Perl, ...) vous aurez
capacités d'édition complètes un peu comme celles de GNU readline(3) fournit. Recherchez-les dans le
modules/par module/terme répertoire sur CPAN. Ceux-ci ne prennent pas en charge la normale vi de ligne de commande
l'édition, cependant.

Une complétion de ligne de commande rudimentaire est également disponible, y compris des variables lexicales dans
la portée actuelle si le module "PadWalker" est installé.

Sans le support Readline, vous pouvez voir les symboles "^[[A", "^[[C", "^[[B", "^[[D"", "^H",
... lors de l'utilisation des touches fléchées et/ou de la touche retour arrière.

Éditeur Assistance pour Débogage
Si vous avez la version GNU de emacs installé sur votre système, il peut interagir avec le
débogueur Perl pour fournir un environnement de développement logiciel intégré rappelant son
interactions avec les débogueurs C.

Les versions récentes d'Emacs sont livrées avec un fichier de démarrage pour faire emacs agir comme une syntaxe-
éditeur dirigé qui comprend (une partie de) la syntaxe de Perl. Voir perlfaq3.

Les utilisateurs de vi devrait également se pencher sur entrain ainsi que gvm, la version mousey and windy, à colorier
des mots-clés Perl.

Notez que seul perl peut vraiment analyser Perl, donc tous ces outils CASE sont quelque peu en deçà de
la marque, surtout si vous ne programmez pas votre Perl comme le ferait un programmeur C.

Notre Perl Profiler
Si vous souhaitez fournir un débogueur alternatif pour que Perl s'exécute, appelez votre script avec un
deux-points et un argument de package donné au -d drapeau. Les débogueurs alternatifs de Perl incluent un
Profileur Perl, Devel::NYTProf, qui est disponible séparément en tant que distribution CPAN. À
profilez votre programme Perl dans le fichier moncode.pl, tapez simplement :

$ perl -d:NYTProf moncode.pl

Lorsque le script se termine, le profileur crée une base de données des informations de profil
que vous pouvez transformer en rapports à l'aide des outils du profileur. Voir pour les détails.

Débogage Régulier Expressions


"use re 'debug'" vous permet de voir les détails sanglants de la façon dont l'expression régulière Perl
le moteur fonctionne. Pour comprendre cette production typiquement volumineuse, il faut non seulement
avoir une idée du fonctionnement de la correspondance d'expressions régulières en général, mais aussi savoir comment
Les expressions régulières de Perl sont compilées en interne dans un automate. Ces questions sont
exploré en détail dans "Débogage des expressions régulières" dans perldebguts.

Débogage Mémoire Utilisation


Perl contient un support interne pour signaler sa propre utilisation de la mémoire, mais c'est un assez
concept avancé qui nécessite une certaine compréhension du fonctionnement de l'allocation de mémoire. Voir
"Débogage de l'utilisation de la mémoire Perl" dans perldebguts pour les détails.

Utiliser perldebug en ligne à l'aide des services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad