2010-04-24 6 views
7

J'essaie une paire Eclipse + PyDev pour certains de mes travaux. (Eclipse v3.5.0 + PyDev v1.5.6) Je ne pouvais pas trouver un moyen d'exposer toutes mes variables à la console PyDev (via la console PyDev -> Console pour l'option de l'éditeur actif actuel) J'utilise un code simple pour décrire le problème . Lorsque je parcours pas à pas le code, je ne peux pas accéder à ma variable "x" depuis la console. Il est affiché sur l'onglet Variables, mais ce n'est pas vraiment ce que je veux.Débogage Python dans Eclipse + PyDev

Toute aide est appréciée.

Voir ma capture d'écran pour une meilleure description:

alt text http://img541.imageshack.us/img541/4514/eclipsedebug.png

EDIT:

On suppose l'ajout d'un simple func comme:

def myfunc(x): 
    return x**x 

Quand je débogage avec la fonction ajoutée le code que je peux accéder à myfunc de la console facilement. (Type myfunc et il sera disponible après cette exécution automatique.

>>> from part2.test import myfunc 
>>> myfunc 

Puis, quand je myfunc (5) il agit comme dans l'interpréteur Python Il serait donc utile d'accéder à des variables de la même façon pour Débogage de mon code J'ai de gros tableaux et je fais divers tests et opérations pendant le processus de débogage Comme: Récupère mon x et fais x.sum(), fais plus tard x [:: 10], ou transpose opère avec d'autres tableaux observe les résultats , expérience etc ...

espère qu'il y aura une meilleure solution.

+0

Je me sers PyDev pendant des mois et je ne savais pas que vous pouvez le faire. (Je n'en ai jamais eu besoin, je suppose). À quoi je pensais? –

+0

Voir ces réponses: - http://stackoverflow.com/questions/2045551/interactive-pydev-console-at-breakpoint - http://stackoverflow.com/questions/271625/interactive-console-using-pydev-in- Eclipse –

+0

OK, certains semblent utiles. La console Still Debug ne donne pas l'impression d'utiliser l'interpréteur Python, où vous pouvez facilement compléter et interagir avec les variables/contenus. –

Répondre

2

Pour ce genre de débogage exploratoire J'aime utiliser pdb, le débogueur inclus dans les batteries. Je ne l'ai pas utilisé à l'intérieur de PyDev, donc je ne sais pas comment tout irait ensemble. Je suppose qu'il fera ce que vous attendez. Un exemple de son utilisation:

import pdb 

def myfunc(x): 
    pdb.set_trace() 
    return x**x 

Ceci brisera juste avant d'exécuter l'instruction de retour, et il vous permet d'utiliser des déclarations pythonique complètes pour savoir ce qui se passe. Je l'utilise comme une déclaration d'impression interactive: définir l'endroit où je veux plonger, examiner les valeurs et comprendre les résultats, et franchir le pas pour le voir se produire. Peut-être est-ce une manière paresseuse de déboguer, mais parfois vous avez besoin de plus d'informations avant de pouvoir prendre des décisions moins paresseuses :-)

La page que je référence habituellement est Python Conquers The Universe qui relie aussi quelques autres sources d'information.

+1

Merci pour la suggestion. Cela ne va pas dans le sens de l'utilisation d'Eclipse :) Sauter dans la définition des fonctions/méthodes est une fonctionnalité intéressante dans Eclipse qui m'incite de plus en plus à y rester plutôt que d'utiliser le cycle de développement basé sur IPython + VIM. Je suis sûr que quelqu'un (Fabio peut-être :)) proposera un moyen d'injecter mes variables dans l'espace de noms local/global pendant le débogage dans Eclipse. –

+0

Notez que vous pouvez faire la même chose dans PyDev dans un contexte de point d'arrêt (voir http://pydev.org/manual_adv_debug_console.html). –

+0

Je ne dirais pas que cela va à l'encontre du but ... mais je vois ce que vous voulez dire. J'ai vérifié et pdb fonctionne très bien dans PyDev, et il sera en effet lié à la source quand PyDev voit des annotations de numéro de ligne. Désolé PyDev n'a pas rattrapé la facilité d'utilisation générale d'Eclipse, bien que je pense que ce sera beaucoup plus loin dans un an. –

8

Mise à jour:

Dans les dernières versions de PyDev, il est possible de clic droit sur une image dans la pile et sélectionnez PyDev> console de débogage pour que la console interactive avec plus de fonctions associées à un contexte lors d'une session de débogage.


Malheureusement, la console interactive réelle, ce qui serait le meilleur moyen de jouer avec le code (avec le code d'achèvement, etc. - http://pydev.org/manual_adv_interactive_console.html) n'a pas la connexion à une session de débogage en ce moment (ce qui est prévu, mais encore pas mis en œuvre).Cependant, avec la console "plus simple" disponible, vous pouvez toujours inspecter et jouer interactivement avec les variables disponibles dans une portée de point de rupture: http://pydev.org/manual_adv_debug_console.html (ce qui est la même chose que vous auriez avec pdb - c'est juste un question de taper le code dans la console disponible après un point d'arrêt est frappé).

Cheers,

Fabio

Questions connexes