Llamo al python -m pdb myapp.py
, cuando se produce una excepción, y normalmente me devolverán al intérprete de pdb para investigar el problema. Sin embargo, esta excepción se lanza después de haber llamado a través del curses.wrapper()
y haber ingresado al modo curses, haciendo que el intérprete pdb sea inútil. ¿Cómo puedo solucionar esto?¿Utiliza un depurador y maldiciones al mismo tiempo?
Respuesta
La respuesta de James es buena y la he modificado, pero también consideraría intentar dividir la lógica y las capas de presentación de mi programa. Mantenga las maldiciones como una capa delgada encima de una biblioteca y escriba un controlador simple que invoca las rutinas correctas para recrear el error. Entonces puedes bucear y hacer lo que sea necesario.
Otra forma en que puedo pensar es crear una función llamada debug
o algo que te devuelve a la pantalla normal e invoca a pdb. Luego, póngalo justo antes del código que genera la excepción y ejecute su programa. Algo así como
def debug(stdscr):
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
import pdb; pdb.set_trace()
Al parecer, esto es similar a lo que se hace con la función curses.wrapper
. Se menciona brevemente en http://www.amk.ca/python/howto/curses/.
Una sabia sugerencia para mantener la lógica de las maldiciones separadas, y gracias por el puntero 'curses.wrapper'. –
De nada. –
Al no estar familiarizado con Python, puede que esto no sea exactamente lo que usted quiere. Pero aparentemente, winpdb puede adjuntarse a un script, al igual que gdb puede para un proceso en ejecución (IIUC).
http://winpdb.org/docs/launch-time/
No se deje engañar por el nombre, es independiente de la plataforma.
Buena sugerencia. Me ganaste a esto. Sería la manera correcta de resolver este problema. También es útil para GUIs y procesos de daemon. –
¡Lo había olvidado todo! –
Supongo que no es posible adjuntar usando el pdb de la biblioteca central. –
uso pyclewn
puede utilizar pyclewn con vim. o usar AP-clon, el núcleo de pyclewn su buena, es como GDB, puede depurar a distancia
- 1. Ejecutando Instrumento-> pérdidas y la consola del depurador al mismo tiempo en xcode
- 2. Conexión USB y depuración al mismo tiempo
- 3. Foldmethod = marcador y sintaxis al mismo tiempo?
- 4. ¿Usar accept() y select() al mismo tiempo?
- 5. ¿Puedo seleccionar y actualizar al mismo tiempo?
- 6. VIM: ¿Guardar y ejecutar al mismo tiempo?
- 7. Estirable y Patrón UIImage al mismo tiempo
- 8. Reproducir y grabar audio al mismo tiempo
- 9. usando onTouch y onCreateContextMenu al mismo tiempo
- 10. Clave primaria y externa al mismo tiempo
- 11. perlbrew y local :: lib al mismo tiempo?
- 12. jQuery: ¿objeto y función al mismo tiempo?
- 13. fadeOut() y slideUp() al mismo tiempo?
- 14. Cómo ACTUALIZAR y SELECCIONAR al mismo tiempo
- 15. Qt - Hacer un divisor horizontal y vertical al mismo tiempo
- 16. Maldiciones al obtener las teclas de flecha
- 17. Overflow-y: auto y overflow-x: visible al mismo tiempo?
- 18. Varias páginas al mismo tiempo en un ViewPager
- 19. ¿Cómo usar apache mod_rewrite y alias al mismo tiempo?
- 20. puede usar Hibernate y Tomcat Connection pool al mismo tiempo?
- 21. ¿Puedo buscar NS y A al mismo tiempo usando dig
- 22. Trabajar con Git y SVN al mismo tiempo
- 23. ¿Pueden funcionar wifi y 3G al mismo tiempo en Android?
- 24. Yii Usando mongo DB y MySQL al mismo tiempo
- 25. ¿Se pueden usar AVCaptureVideoDataOutput y AVCaptureMovieFileOutput al mismo tiempo?
- 26. ¿Cómo aprender C# y ASP.NET MVC al mismo tiempo?
- 27. Cómo actualizar y seleccionar al mismo tiempo en MySQL
- 28. ¿Puedo crear una lista y ordenarla al mismo tiempo?
- 29. xstream analizar los atributos y valores, al mismo tiempo
- 30. curl obtener archivo remoto y descargar fuerza al mismo tiempo
creo que podría haber http://wiki.python.org/moin/PythonDebuggers –
Tengo una risa Infomation útiles en el título de esto. Sí, la depuración y las maldiciones parecen ir juntas en mi mente. – HLGEM