Lorsque je lance un script Perl, comment puis-je le déboguer? Par exemple, dans ksh, j'ajoute le drapeau -x
. Mais comment je fais la même chose en Perl?Comment puis-je déboguer un script Perl?
Répondre
Si vous utilisez un débogueur interactif est OK pour vous, vous pouvez essayer perldebug
perl -d your_script.pl args
comment vous déboguer Perl
Je recommande également d'utiliser la Perl debugger.
Cependant, puisque vous avez demandé quelque chose comme -x
du shell, jetez un oeil au module Devel::Trace qui fait quelque chose de similaire.
L'outil de débogage le plus efficace est encore careful thought, couplé avec des instructions d'impression judicieusement placés.
(et l'amélioration des déclarations d'impression avec Data::Dumper)
Joli petit débat ici sur le débogueur perl aussi http://www.perlmonks.org/?node_id=48579 –
link is dead. S'il vous plaît examiner votre réponse –
Donc, en bref, Perl veut que vous codez comme c'est 1979? –
Si vous voulez faire le débogage à distance (pour cgi ou si vous ne voulez pas la sortie du mess avec la ligne de commande de débogage), utilisez ceci:
test donné:
use v5.14;
say 1;
say 2;
say 3;
Démarrez un écouteur sur quel que soit l'hôte et le port sur la borne 1 (ici localhost: 12345):
$ nc -v -l localhost -p 12345
pour le support readline utilisation rlwrap (vous pouvez utiliser sur perl -d
aussi):
$ rlwrap nc -v -l localhost -p 12345
et démarrer le test sur un autre terminal (par exemple la borne 2):
$ PERLDB_OPTS="RemotePort=localhost:12345" perl -d test
d'entrée/sortie sur la borne 1:
Connection from 127.0.0.1:42994
Loading DB routines from perl5db.pl version 1.49
Editor support available.
Enter h or 'h h' for help, or 'man perldebug' for more help.
main::(test:2): say 1;
DB<1> n
main::(test:3): say 2;
DB<1> select $DB::OUT
DB<2> n
2
main::(test:4): say 3;
DB<2> n
3
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
DB<2>
sortie sur la borne 2:
1
Notez la phrase si vous voulez une sortie à la fin du débogage al
select $DB::OUT
Si vous êtes un utilisateur vim, installer ce plugin: dbg.vim qui fournit un support de base pour perl
Pour exécuter votre script sous débogueur de Perl, vous devez utiliser -d
switch:
perl -d script.pl
Mais Perl est flexible. Il fournir quelques crochets et vous pouvez forcer débogueur à travailler comme vous voulez
donc d'utiliser différents débogueurs vous pouvez le faire:
perl -d:DebugHooks::Terminal script.pl
# OR
perl -d:Trepan script.pl
Regardez ces modules here et here
Il y a plusieurs perl plus intéressants modules crochet dans les internes débogueur perl: Devel::NYTProf, Devel::Cover
Et many others
J'ai trouvé que Devel :: NYTProf était très utile pour identifier et accélérer les ralentissements de mon code Perl. –
@MatthewLock Ouais, [Devel :: NYTProf] (https://metacpan.org/pod/Devel::NYTProf) est une chose incroyable –
- 1. Déboguer le script Perl - interpolation de variable
- 2. Comment exécuter un script Perl depuis un script Perl?
- 3. Comment faire pour déboguer un script beanshell?
- 4. Vous voulez exécuter un script Perl dans un script Perl
- 5. Delphi Web Script: Comment déboguer un script spécifique Fonction
- 6. Appel d'un script Perl depuis un script Perl
- 7. Comment utiliser Awk dans un script Perl?
- 8. Comment appeler un script Perl depuis PHP?
- 9. Comment exécuter un script Perl dans Java?
- 10. Comment exécuter un script perl sur crontab
- 11. Comment boucler/redémarrer un script Perl?
- 12. Comment est-ce que je démonise un script Perl depuis un script Perl?
- 13. Comment déboguer un programme enveloppé dans un script libtool?
- 14. Comment puis-je convertir un script shell en script Perl?
- 15. Flux de travail à déboguer pour un programmeur Perl
- 16. Comment puis-je déboguer mon programme Perl Net :: Telnet?
- 17. Déboguer un script python utilisé avec nmake
- 18. Comment déboguer le script de réécriture htaccess
- 19. Comment déboguer cette erreur de script Java
- 20. Comment utiliser ce script Perl?
- 21. Un script python multithread meurt en silence - comment déboguer
- 22. Comment déboguer un script utilisant stdin avec ipython?
- 23. Comment déboguer un script tcl qui est l'argument d'un exécutable?
- 24. COMMENT UTILISER Pycharm pour déboguer un script python?
- 25. Comment puis-je déboguer un script PHP CLI avec xdebug?
- 26. Compiler un script Perl à un
- 27. Déboguer le script PHP timeout?
- 28. Comment quitter un chroot dans un script Perl?
- 29. Comment créer un raccourci Windows pour exécuter un script Perl?
- 30. Comment vérifier si un script Perl s'exécute dans un terminal?
La réponse d'Alex a un lien vers la documentation pour '-d' – DVK
Étape 1: ajouter' use strict; utiliser les avertissements; 'en haut de votre script. Si cela ne vous aide pas, passez à l'étape 2: utilisez perl -d. –