Si j'ai un programme où Oftentimes Ce problème est subtil, ce qui me faisait penser qu'un programme est suspendu lorsqu'il attend vraiment une contribution. p>
Comment les gens travaillent-ils autour de cela? (Malheureusement, l'utilisation d'autres debuggotes comme WinPDB n'est pas une option). P> stdout code> est redirigé, mon PDB invite toutes aller à la redirection, car la bibliothèque a été écrite pour écrire sur
stdout code>. p>.
3 Réponses :
Si vous invoquez PDB dans le code, vous pouvez transmettre votre propre stdout dans le constructeur. Si vous invoquez PDB à partir de la ligne de commande, vous pouvez copier la fonction alors vous pouvez invoquer sane_pdb.py au lieu de pdb.py.py. Ce n'est pas génial que vous deviez copier 40 lignes dans votre propre fichier pour en changer l'un, mais c'est une option. P> P> sys .__ stdout __ code> pourrait être un bon choix.
Main () code> de pdb.py dans votre propre sane_pdb.py. Puis changez l'initialisation PDB () à: p>
Cette réponse est juste pour compléter NED, comme moyen d'envelopper la fonction PDB.PY Je ne sais pas si cela fonctionne réellement pour le problème du questeur, mais cela fait ce que NED décrit ... p> p> MAIN () code> de manière à ne pas nécessiter de copier 40 lignes simplement pour en changer l'un: < PRE> XXX PRE>
Le problème ici est que PDB utilise la classe CMD où par défaut: Cela signifie que cmd utilisera et exécuté p> < Pré> xxx pré> mais, si vous l'exécutez avec la redirection de sortie, il restera bloqué p> C'est exactement ce que PDB utilise et pourquoi il est coincé aussi. Comme je l'ai mentionné retour à Le problème d'origine Tout ce que vous avez à faire est de dire à CMD de ne pas utiliser ou p> brut_input () code> méthode par défaut au lieu de
sys.stdout.readline () code> à lire à partir de la console. Ceci est fait car
Raw_Input () code> prend en charge l'historique (uniquement si
LishineLine code> est chargé) et d'autres bits utiles. Le seul problème est que
Raw_Input () code> ne prend pas la redirection, donc si vous avez un script: p>
sys.stdin.readline () code> prend en charge la redirection et si vous réécrivez le script ci-dessus à l'aide de
readline () code> Ça devrait fonctionner. P>
brut_input () code>: p>