Cuando ejecuto un script de Perl, ¿cómo puedo depurarlo? Por ejemplo, en ksh agrego el indicador -x
. ¿Pero cómo hago lo mismo en Perl?¿Cómo puedo depurar un script de Perl?
Respuesta
Si se utiliza un depurador interactivo está bien para usted, usted puede intentar perldebug
perl -d your_script.pl args
es cómo depurar Perl
También recomendaría el uso de la Perl debugger.
Sin embargo, ya que ha preguntado por algo como shell -x
eche un vistazo al módulo Devel::Trace que hace algo similar.
La herramienta de depuración más eficaz sigue siendo careful thought, junto con las declaraciones de impresión juiciosamente colocadas. (Declaraciones y la mejora de impresión con Data::Dumper)
Un pequeño y agradable debate aquí sobre el depurador de perl también http://www.perlmonks.org/?node_id=48579 –
el enlace está muerto. Por favor, revise su respuesta –
Entonces, en resumen, ¿Perl quiere que codifique como si fuera 1979? –
Si usted quiere hacer de depuración remota (por cgi o si no quiere meterse con salida de línea de comandos de depuración) utilizar este:
prueba dada:
use v5.14;
say 1;
say 2;
say 3;
inicie un receptor de cualquiera que sea host y el puerto en el terminal 1 (aquí localhost: 12345):
$ nc -v -l localhost -p 12345
apoyo para el uso de readline rlwrap (se puede utilizar en perl -d
también):
$ rlwrap nc -v -l localhost -p 12345
Y comenzar la prueba en otro terminal (dicen terminal 2):
$ PERLDB_OPTS="RemotePort=localhost:12345" perl -d test
de entrada/salida en el terminal 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>
salida en el terminal 2:
1
Tenga en cuenta la frase si desea salida en debug termin Al
select $DB::OUT
Si eres usuario de vim, instalar este plugin: dbg.vim que proporciona soporte básico para Perl
Para ejecutar la secuencia de comandos bajo depurador Perl se debe utilizar -d
interruptor:
perl -d script.pl
Pero Perl es flexible. Se suministran algunos ganchos y puede forzar depurador para trabajar como desee
Así que utilizar diferentes depuradores puede hacer:
perl -d:DebugHooks::Terminal script.pl
# OR
perl -d:Trepan script.pl
Mira estos módulos here y here
Hay varias Perl más interesante Los módulos que se enganchan en la parte interna del depurador de perl: Devel::NYTProf, Devel::Cover
Encontré Devel :: NYTProf invaluable para identificar y acelerar los puntos lentos en mi código perl. –
@MatthewLock Sí, [Devel :: NYTProf] (https://metacpan.org/pod/Devel::NYTProf) es una cosa increíble –
- 1. ¿Cómo ejecuto un script Perl desde un script Perl?
- 2. ¿Cómo puedo ssh dentro de un script de Perl?
- 3. ¿Cómo puedo llamar un script de Perl desde PHP?
- 4. Cómo depurar scripts de Perl que horquilla
- 5. ¿Cómo puedo invocar un script PHP desde Perl?
- 6. Cómo depurar un componente de script en SSIS
- 7. ¿Cómo depurar un programa envuelto en un script libtool?
- 8. ¿Cómo puedo agregar internacionalización a mi script de Perl?
- 9. ¿Cómo puedo depurar (preferiblemente en un IDE) un script de MSBuild?
- 10. ¿Cómo puedo llamar al script Perl en la aplicación C#?
- 11. ¿Cómo puedo modificar mi script Perl para usar múltiples procesadores?
- 12. ¿Cómo puedo depurar AutoMapper.AutoMapperMappingException
- 13. ¿Cómo puedo tener aserciones variables en Perl?
- 14. ¿Cómo puedo averiguar qué script, programa o shell ejecutó mi script de Perl?
- 15. ¿Cómo puedo depurar un archivo MSBuild?
- 16. ¿Cómo puedo depurar un hilo Java colgante?
- 17. ¿Cómo puedo obtener un rastreo en Perl?
- 18. ¿Cómo puedo depurar un Doclet en Eclipse?
- 19. ¿Tiene un buen script de plantilla Perl?
- 20. ¿Cómo puedo depurar un script Launchd que no se ejecuta en el inicio?
- 21. ¿Cómo compilar un script de Perl para un ejecutable de Windows con Strawberry Perl?
- 22. ¿Cómo depurar el script de fondo de Google Chrome?
- 23. ¿Puedo depurar un ensamblado compilado?
- 24. ¿Cómo puedo compilar mi script Perl para que se pueda ejecutar en sistemas sin Perl instalado?
- 25. ¿Cómo puedo empaquetar mi script Perl para que se ejecute en una máquina sin Perl?
- 26. ¿Cómo llamar a un script de Python desde Perl?
- 27. ¿Cómo puedo depurar las reglas de mod_rewrite?
- 28. Perl: ¿Cómo puedo hacer que Emacs agregue comillas a la ruta completa de un script de Perl?
- 29. ¿Cómo puedo salir de un script nodeJS desde el script?
- 30. Script Call Perl de Python
La respuesta de Alex tiene un enlace a la documentación de '-d' – DVK
Paso 1: agregar' use strict; usa advertencias; 'en la parte superior de tu script. Si eso no ayuda, vaya al paso 2: use perl -d. –