Question

J'appelle python -m pdb myapp.py, lorsqu'un feu d'exception, et je serais normalement rejeté à l'interprète pdb pour enquêter sur le problème. Cependant, cette exception est jetée après que je l'ai appelé par curses.wrapper() et entré en mode curses, ce qui rend l'interprète pdb inutile. Comment puis-je contourner cela?

Était-ce utile?

La solution

James` réponse est bonne et je l'ai upvoted mais je voudrais aussi envisager d'essayer de séparer les couches logiques et de présentation de mon programme. Gardez la partie de malédictions une couche mince sur le dessus d'une bibliothèque et d'écrire simple pilote qui appelle les routines correctes pour recréer l'erreur. Ensuite, vous pouvez plonger et faire ce qui est nécessaire.

Une autre façon que je peux penser est de créer une fonction appelée debug ou quelque chose que vous rejette dans l'écran normal et invoque pdb. Puis coller juste avant le code qui soulève l'exception et exécutez votre programme. Quelque chose comme

def debug(stdscr):
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    import pdb; pdb.set_trace()

Apparemment, ce qui est similaire à ce qui se fait avec la fonction curses.wrapper. Il est mentionné brièvement http://www.amk.ca/python/howto/curses/.

Autres conseils

Ne pas être familier avec Python, cela peut ne pas être exactement ce que vous voulez. Mais apparemment, Winpdb peut attacher à un script - tout comme gdb peut à un processus en cours d'exécution (IIUC).

http://winpdb.org/docs/launch-time/

Ne vous laissez pas induire en erreur par le nom, il est indépendant de la plateforme.

utiliser pyclewn

vous pouvez utiliser pyclewn avec vim. ou utiliser pdb-clone, le noyau de pyclewn son bien, son comme gdb, peut débogage à distance

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top