2009-10-23 9 views
6

Je suis novice en python et je n'ai pas été capable de savoir si c'est possible ou non. J'utilise le plugin PyDev sous Eclipse, et tout ce que je veux savoir c'est: est-il possible d'éditer du code pendant que vous êtes assis à un point d'arrêt? C'est à dire. Modifiez le code pendant le débogage. Cela me permet de le faire à l'heure actuelle, mais il semble que j'exécute toujours la ligne de code qui existait auparavant avant de faire des changements.Débogage Python: édition de code à la volée

Aussi, êtes-vous capable de faire glisser l'exécution du programme de retour comme vous pouvez dans VBA et C# par exemple?

Si l'une de ces options est possible, comment puis-je les activer?

Répondre

2

Lorsque vous démarrez un programme Python, il sera compilé en bytecode (et éventuellement enregistré en tant que fichier .pyc). Cela signifie que vous pouvez changer la source mais puisque vous n'ouvrez pas la source, le changement ne sera pas repris.

Il existe des systèmes comme TurboGears (un framework web) qui détectent ces changements et redémarrent eux-mêmes, mais cela va probablement perturber le débogueur.

Remonter dans le temps n'est pas possible actuellement car l'interpréteur bytecode aurait besoin de support pour cela.

+0

Il est vrai que vous ne pouvez pas remonter dans le temps, et aussi que le débogueur est mono-thread et ne peut pas supporter un redémarrage, mais votre titre, "ce n'est pas possible avec Python maintenant" est inexact, comme @nikow souligne. – jMyles

4

PyDev prend en charge cela dans une certaine mesure depuis la version 1.4.8, voir le change notes et le blog entry correspondant.

+0

Je ne vois pas les références dont vous parlez. Pouvez-vous les désigner plus précisément? Cela semble excitant. Je n'avais même pas eu connaissance de la nouvelle version de PyDev jusqu'à ce que votre réponse attire mon attention, alors merci. :-) – jMyles

+0

J'ai corrigé le deuxième lien. – nikow

2

Vous pouvez exécuter des commandes arbitraires dans la console pendant le point d'arrêt. Pour mes besoins, cela a typiquement le même but que le codage en direct, bien que je le fasse avec un style aussi élégant que simplement en utilisant l'éditeur.