10
votes

Utiliser un débogueur et des malédictions en même temps?

Je appelle python -m pdb myapp.py , lorsqu'une exception se déclenche, et je serais normalement renvoyé à l'interprète PDB pour enquêter sur le problème. Cependant, cette exception est lancée après que j'ai appelé via cureses.wrapper () et entré le mode de malédiction, rendant l'interprète PDB inutile. Comment puis-je travailler autour de cela?


2 commentaires

Je pense qu'il pourrait y avoir une infomation utile wiki.python.org/moin/pythondebuggers


Je me suis riant du titre de ceci. Ouais, le débogage et la maudire semblent aller ensemble dans mon esprit.


3 Réponses :


7
votes

Ne pas connaître Python, cela peut ne pas être exactement ce que vous voulez. Mais apparemment, WinPDB peut s'attacher à un script - tout comme GDB peut sur un processus en cours d'exécution (IIUC).

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

Ne soyez pas induire en erreur par le nom, c'est une plate-forme indépendante.


3 commentaires

Bonne suggestion. Vous me battez à cela. Ce serait la bonne façon d'aller sur ce problème. Également utile pour les processus Guis et Daemon.


Je suppose que il est possible de joindre à l'aide de la PDB de la bibliothèque principale?


Je ne le pense pas. Vous devrez utiliser WinPDB sur le «client» et le «serveur».



10
votes

James` La réponse est une bonne et je l'ai avancée, mais j'envisagerais également d'essayer de scinder les couches de la logique et de la présentation de mon programme. Gardez la partie des malédictions une couche mince sur la base d'une bibliothèque et écrivez un simple pilote qui invoque les routines correctes pour recréer l'erreur. Ensuite, vous pouvez plonger et faire ce qui est nécessaire.

Une autre façon dont je peux penser, c'est créer une fonction appelée débogage ou quelque chose qui vous renvoie dans l'écran régulier et invoque PDB. Alors tenez-le juste avant le code qui soulève l'exception et exécutez votre programme. Quelque chose comme xxx

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


1 commentaires

Une suggestion judicieuse de garder la logique de la malédiction séparée et merci pour le pointeur CURSESE.WRAPPER .



0
votes

utiliser pyclewn

Vous pouvez utiliser pyclewn avec Vim. Ou utilisez le clone PDB, le noyau de pyclewn c'est bon, c'est comme gdb, peut déboguer à distance


1 commentaires

Pyclewn n'est plus supporté en fonction de ce lien.