Python es bastante bueno, pero desafortunadamente, su depurador no es tan bueno como perl -d.Depurador de Python: entrando en una función que ha llamado interactivamente
Una cosa que hago con mucha frecuencia al experimentar con código es llamar a una función desde dentro del depurador, y entrar en esa función, así:
# NOTE THAT THIS PROGRAM EXITS IMMEDIATELY WITHOUT CALLING FOO()
~> cat -n /tmp/show_perl.pl
1 #!/usr/local/bin/perl
2
3 sub foo {
4 print "hi\n";
5 print "bye\n";
6 }
7
8 exit 0;
~> perl -d /tmp/show_perl.pl
Loading DB routines from perl5db.pl version 1.28
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(/tmp/show_perl.pl:8): exit 0;
# MAGIC HAPPENS HERE -- I AM STEPPING INTO A FUNCTION THAT I AM CALLING INTERACTIVELY
DB<1> s foo()
main::((eval 6)[/usr/local/lib/perl5/5.8.6/perl5db.pl:628]:3):
3: foo();
DB<<2>> s
main::foo(/tmp/show_perl.pl:4): print "hi\n";
DB<<2>> n
hi
main::foo(/tmp/show_perl.pl:5): print "bye\n";
DB<<2>> n
bye
DB<2> n
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> q
Esto es increíblemente útil cuando se trata de un paso a través el manejo de una función de varias entradas diferentes para descubrir por qué falla. Sin embargo, no parece funcionar ni en pdb ni en pydb (mostraría un ejemplo de python equivalente al anterior, pero da como resultado un gran volcado de la pila de excepciones).
Así que mi pregunta es doble:
- Me estoy perdiendo algo?
- ¿Hay un depurador de Python que me permita hacer esto?
Obviamente, pude poner las llamadas en el código, pero me encanta trabajar de forma interactiva, por ejemplo. no tener que empezar desde cero cuando quiero intentar llamar con un conjunto ligeramente diferente de argumentos.
¿Puedes aceptar la última respuesta? – sureshvv
OP respondió a su pregunta en la parte inferior: https://stackoverflow.com/a/228653/5512755 – Dunatotatos