2010-04-29 14 views
8

Lors du débogage de mes applications django, j'utilise pdb pour le débogage interactif avec pdb.set_trace().Y at-il de toute façon que pdb et Mac Terminal jouent bien?

Cependant, lorsque je modifie un fichier, le serveur web local django redémarre et je ne vois plus ce que je tape dans le terminal, jusqu'à ce que je tape reset.

Y at-il de toute façon que cela se fasse automatiquement? Cela peut être vraiment ennuyeux, devoir annuler le serveur et réinitialiser et le redémarrer tout le temps. On me dit que cela n'arrive pas sur les autres systèmes d'exploitation (Ubuntu) alors y a-t-il un moyen de ne pas le faire sur Mac? (J'utilise Snow Leopard).

Répondre

8

OK - cela fonctionne pour moi, je créé un ~/.pdbrc et ajouté

import os
os.system ("stty sane")

Maintenant, chaque pdb temps est exécuté, il rétablit les paramètres de ligne à sane.

Si je tombe sur le terminal alors je dois encore le faire manuellement - mais cela résout de devoir quitter runserver et de réinitialiser tout le temps.

1

Essayez de [q] uit pdb avant d'enregistrer les modifications apportées à un fichier. Cela empêchera la console de se déplacer sur vous mais uniquement pour cette exécution de pdb.set_trace().

Vous devrez toujours revenir à l'ancien^C + reset + ./manage.py runserver lorsque vous oubliez de quitter pdb. Une chose qui peut rendre la réinitialisation un peu moins ennuyeuse est de mettre la réinitialisation et runserver sur une ligne. De cette façon, la réinitialisation est juste un rapide ^Rreset ou flèche vers le haut.

[ ... ] 
Development server is running at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 
^C$ reset && ./manage.py runserver 
1

Le meilleur que j'ai trouvé est de faire une remise à zéro à l'intérieur pdb comme ceci:

import os; os.system ("reset");