Voglio il debugger del programma perl quando si verifica un problema. Qualche altra lingua ha l'istruzione debug() supportata dalla libreria, c'è qualche dichiarazione simile in perl?Posso inserire breakpoint nel programma perl sorgente?
risposta
Hai provato ad aggiungere l'opzione -d alla riga shebang nella parte superiore dello script? Qualcosa di simile
#!/usr/bin/perl -d
use strict;
use warnings;
$|=1;$\="\n";
print "Test";
Dipende esattamente come viene lanciato, ma almeno nei casi più semplici questo dovrebbe avviare il debugger.
Edit: È quindi possibile impostare un punto di interruzione su una linea specifica con una certa condizione utilizzando
> b [line] [condition]
e ha colpito
> c
per continuare con l'esecuzione dello script - il debugger si fermerà davanti a la linea specificata quando la condizione è soddisfatta
Bene, c'è qualcosa che ti permetterà di fare qualcosa come i punti di interruzione, ma la funzionalità è più ampia: Perl Debugger.
In sostanza lo switch
-d
consente di comunicare con l'eseguibile perl e consente al perl eseguibile di comunicare con l'utente.
Il mio pezzo di codice perl fa parte di un sistema di grandi dimensioni e non riesco a controllare come viene avviato. Sembra che posso solo modificare il file sorgente per farlo. – Thomson
@ Tan Tan: In tal caso, la registrazione funzionerebbe meglio. Dai un'occhiata a [Log :: Log4perl] (http://search.cpan.org/perldoc?Log::Log4perl). –
Se ho capito bene, è necessario utilizzare una variabile debugger specifica nel codice - $DB::single
. Impostando questo su un valore reale nel codice, il debugger si fermerà su quella linea.
$x = 1234;
$DB::single = 1;
enter_problematic_sub_now();
vostro codice sarà poi fermarsi alla linea con $ DB :: unico set a 1.
Naturalmente, se non si può effettivamente garantire che il codice viene eseguito nel debugger poi si deve un altro problema interamente. Si sarà necessario eseguire il codice tramite perl -d
pure.
Vuoi dire se il mio programma non viene eseguito nel debugger, non posso usare $ DB :: single come previsto? – Thomson
@Thompson: Sì, è vero. Se si desidera eseguire il debug di un programma Perl, è necessario eseguirlo con un debugger. Per quanto ne sappia, questo genere di cose è valido per la maggior parte dei tipi di debug in tempo reale basati su sorgenti in altre lingue, nonostante il post-mortem dei coredumps. – tchrist
@tchrist Non sono sicuro di come funzioni internamente in Python, ma posso fare 'import pdb; pdb.set_trace() 'ovunque nel codice per rompere in quel punto e inserire il debugger. Non devo eseguire lo script con alcun modificatore di debug speciale. –
- 1. In Visual Studio, posso inserire i breakpoint nel codice per i quali ho solo i simboli di debug?
- 2. Come forzare IntelliJ a inserire solo il mio codice sorgente?
- 3. In phpStorm, come inserire javascript breakpoint in un file php
- 4. Come posso riordinare automaticamente il codice sorgente Perl?
- 5. Come inserire le variabili nel programma di formattazione del registratore?
- 6. Come posso disattivare temporaneamente STDOUT in un programma Perl?
- 7. Perché i breakpoint condizionali rallentano così tanto il mio programma?
- 8. Come inserire hash in hash in Perl
- 9. Posizione di configurazione nel programma unix
- 10. ABAP breakpoint
- 11. Inserire MAVEN_OPTS nel POM.xml
- 12. Impostazione del percorso in un programma Perl
- 13. .vcxproj nel controllo sorgente
- 14. Virtualenv nel controllo sorgente
- 15. In Perl, come posso rilasciare memoria nel sistema operativo?
- 16. Programma di formattazione sorgente python programmabile
- 17. Come posso decodificare un programma Perl che è stato compilato con perlcc?
- 18. Cosa inserire nel ViewModel
- 19. breakpoint gdb su pthread_create
- 20. Come posso verificare il codice sorgente Android nel SO Windows?
- 21. Come stampare l'utilizzo del programma in Perl?
- 22. Come strutturare il mio programma Perl CGI?
- 23. Come incorporare l'interprete Perl in C# Programma
- 24. Come avviare un programma da perl?
- 25. Come posso inserire un ritardo nel mio script?
- 26. Come posso inserire una barra di scorrimento nel jQuery jQuery?
- 27. Google Analytics - Posso inserire lo script nel piè di pagina?
- 28. Come posso costruire un hash Perl nel codice C?
- 29. Put breakpoint on named function
- 30. //! [0] nel codice sorgente Qt
È grandioso. C'è una sintassi simile su Windows? – Thomson
Credo che perl rispetterà gli switch anche se l'effettivo lancio perl eseguibile non è quello elencato nello shebang - cioè, anche se lo script precedente è avviato come, per esempio, C: \ Perl \ bin \ perl.exe script.pl , dovrebbe comunque avviare il debugger – ivancho