Quando eseguo uno script Perl, come posso eseguirne il debug? Ad esempio, in ksh aggiungo il flag -x
. Ma come faccio lo stesso in Perl?Come posso eseguire il debug di uno script Perl?
risposta
Se si utilizza un debugger interattivo è OK per voi, si può provare perldebug
perl -d your_script.pl args
è come il debug Perl
Vorrei inoltre consiglia di utilizzare il Perl debugger.
Tuttavia, dal momento che hai chiesto qualcosa di simile allo -x
della shell, dai uno sguardo al modulo Devel::Trace che fa qualcosa di simile.
Lo strumento di debug più efficace è ancora careful thought, accoppiato con istruzioni print giudiziosamente collocati. (Dichiarazioni e migliorando stampa con Data::Dumper)
Bel dibattito qui sul perl debugger anche http://www.perlmonks.org/?node_id=48579 –
link is dead. Si prega di rivedere la risposta –
Quindi, in breve, Perl vuole che tu codi come se fosse il 1979? –
Se si vuole fare debug remoto (per cgi o se non si desidera attivare pasticciare con riga di comando di debug) utilizzare questo:
dato test:
use v5.14;
say 1;
say 2;
say 3;
avviare un listener su qualunque host e la porta sul morsetto 1 (qui localhost: 12345):
$ nc -v -l localhost -p 12345
per l'uso sostegno readline rlwrap (è possibile utilizzare sul perl -d
troppo):
$ rlwrap nc -v -l localhost -p 12345
E iniziare il test su un altro terminale (dicono morsetto 2):
$ PERLDB_OPTS="RemotePort=localhost:12345" perl -d test
Input/Output sul morsetto 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>
uscita sul terminale 2:
1
Si noti la frase se si desidera l'output sul terminale di debug Al
select $DB::OUT
Se sei un utente vim, installare questo plugin: dbg.vim che fornisce il supporto di base per perl
Per eseguire lo script con debugger Perl si dovrebbe usare -d
interruttore:
perl -d script.pl
Ma perl è flessibile. Esso fornisce alcuni ganci e si può costringere debugger per lavorare come si desidera
Quindi, per utilizzare diverse debugger si può fare:
perl -d:DebugHooks::Terminal script.pl
# OR
perl -d:Trepan script.pl
Guardate questi moduli here e here
ci sono parecchi più interessanti perl moduli che agganciano in perl interni debugger: Devel::NYTProf, Devel::Cover
Ho trovato Devel :: NYTProf inestimabile nell'identificare e velocizzare i punti lenti nel mio codice perl. –
@MatthewLock Sì, [Devel :: NYTProf] (https://metacpan.org/pod/Devel::NYTProf) è una cosa incredibile –
- 1. Come posso eseguire uno script Perl su Mac OS X?
- 2. Come posso ssh all'interno di uno script Perl?
- 3. Come posso eseguire il debug di uno script CLI PHP con xdebug?
- 4. Come posso eseguire il debug di uno script su un maiale
- 5. Come posso eseguire il mio script CGI perl senza apache?
- 6. Posso eseguire uno script Python come servizio?
- 7. Come posso eseguire automaticamente una grande quantità di script perl?
- 8. Come posso chiamare uno script Perl da PHP?
- 9. Come posso eseguire uno script Perl come un demone di sistema in linux?
- 10. Come posso eseguire il debug (preferibilmente in un IDE) uno script MSBuild?
- 11. Posso aggiungere uno script di debug a NPM?
- 12. Come posso compilare uno script Perl all'interno di una sessione Perl in esecuzione?
- 13. Come posso ottenere uno script Perl per vedere le variabili in un altro script Perl?
- 14. Perl: Come posso ottenere Emacs per aggiungere virgolette al percorso completo di uno script Perl?
- 15. Come deobfusacte correttamente uno script Perl?
- 16. Come eseguire il debug di un programma racchiuso in uno script libtool?
- 17. COME USARE Pycharm per eseguire il debug di script Python?
- 18. Come eseguire il debug di uno script PHP che non finisce mai di caricarsi?
- 19. Come eseguire il debug di script di riscrittura htaccess
- 20. Come posso eseguire il codice Perl memorizzato all'interno di una variabile di script della shell?
- 21. Come eseguire uno script all'avvio di Ubuntu?
- 22. Come posso eseguire uno script PHP da Java?
- 23. Come eseguire il debug di uno shader GLSL?
- 24. Come eseguire il debug di uno StackOverflowException in .NET
- 25. Come eseguire il debug di uno std :: eccezione bad_cast
- 26. Come eseguire il debug di uno specifico evento click javascript?
- 27. Come posso eseguire uno script 'R' senza sopprimere l'output?
- 28. Come eseguire uno script Julia in Atom
- 29. Come posso eseguire il debug di un'espressione regolare in python?
- 30. Come eseguire uno script python da java?
La risposta di Alex ha un collegamento alla documentazione per '-d' – DVK
Passaggio 1: aggiungere' use strict; usa gli avvertimenti; 'all'inizio del tuo script. Se questo non aiuta, vai al passaggio 2: usa perl -d. –