2010-04-24 15 views
7

Intento el par Eclipse + PyDev para algunos de mis trabajos. (Eclipse v3.5.0 + PyDev v1.5.6) No pude encontrar una manera de exponer todas mis variables a la consola de PyDev (a través de la consola de PyDev -> Consola para la opción del editor activo actual) Utilizo un código simple para describir el problema . Cuando paso por paso reviso el código, no puedo acceder a mi variable "x" desde la consola. Se ve en la pestaña Variables, pero eso no es realmente lo que quiero.Depuración de Python en Eclipse + PyDev

Se agradece cualquier ayuda.

Ver mi pantalla para una mejor descripción:

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

EDIT:

Asumir la adición de un func simple como:

def myfunc(x): 
    return x**x 

Cuando elimino errores con la función añadida de el código Puedo acceder a myfunc desde la consola fácilmente. (Tipo myfunc y estará disponible después de esta ejecución automática:.

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

Entonces cuando hago myfunc (5) que actúa igual que en el intérprete de Python Sería muy útil para acceder a las variables de la forma similar para depurando mi código. Tengo grandes arreglos y hago varias pruebas y operaciones durante el proceso de depuración. Me gusta: Obtenga mi x y haga x.sum(), haga luego x [:: 10], o transponga opere con otras matrices observe los resultados , experimentar etc ...

esperamos que haya una mejor solución.

+0

He estado usando PyDev durante meses y no sabía que usted puede hacer esto. (Nunca lo necesité, supongo). ¿Qué estaba pensando? –

+0

Vea estas respuestas: - http://stackoverflow.com/questions/2045551/interactive-pydev-console-at-breakpoint - http://stackoverflow.com/questions/271625/interactive-console-using-pydev-in- eclipse –

+0

OK, algunos parece útil. La consola Still Debug no da la sensación real de utilizar el intérprete de Python, donde puede completar tabulaciones e interactuar con variables/contenidos de manera fácil y conveniente. –

Respuesta

2

Para este tipo de depuración exploratoria me gusta para usar pdb, el depurador incluido en las baterías. No lo he usado dentro de PyDev, así que no sé cómo encajaría todo. Supongo que hará lo que esperas. Un ejemplo de su uso:

import pdb 

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

Esto romperá justo antes de ejecutar la instrucción de retorno, y que le permite utilizar sentencias Pythonic completos de averiguar lo que está pasando. Lo uso como una declaración de impresión interactiva: establezco el lugar en el que quiero bucear, examinando valores y calculando resultados, y paso a paso para ver cómo sucede. Tal vez esta es una forma perezosa de depurar, pero a veces necesita más información antes de tomar decisiones menos perezosas :-)

La página que suelo consultar está en Python Conquers The Universe, que también vincula algunas otras fuentes de información.

+1

Gracias por la sugerencia. El propósito de usar Eclipse es muy poco convincente. Saltar a la definición de funciones/métodos es una gran característica de Eclipse que cada vez me impulsa más a permanecer allí en lugar de usar el ciclo de desarrollo basado en IPython + VIM. Estoy seguro de que alguien (tal vez Fabio :)) sugerirá una forma de inyectar mis variables en el espacio de nombres local/global mientras se depura en Eclipse. –

+0

Tenga en cuenta que puede hacer lo mismo en PyDev en un contexto de punto de interrupción (consulte http://pydev.org/manual_adv_debug_console.html). –

+0

No diría que derrota el propósito ... pero veo tu punto. Comprobé y pdb funciona bien en PyDev, y de hecho se vinculará a la fuente cuando PyDev vea anotaciones de números de línea. Lo siento, PyDev no se ha puesto al día con la usabilidad general de Eclipse, aunque sospecho que pasará mucho más dentro de un año. –

8

Actualización:

En las últimas versiones PyDev, es posible haga clic derecho en un fotograma de la pila y seleccione PyDev> consola de depuración para que la consola interactiva con más funciones asociadas a un contexto durante una sesión de depuración.


Por desgracia, la consola interactiva real, lo que sería la mejor forma de jugar con el código (con el código de finalización, etc - http://pydev.org/manual_adv_interactive_console.html) no tiene conexión con una sesión de depuración en este momento (esto está previsto, pero aún no se ha implementado).

Aún así, con la consola 'más simple' disponible, todavía puede inspeccionar interactivamente y jugar con las variables disponibles en un alcance de punto de interrupción: http://pydev.org/manual_adv_debug_console.html (que es lo mismo que tendría con pdb; es solo una cuestión de escribir el código en la consola disponible después de que se alcanza un punto de interrupción).

Saludos,

Fabio

Cuestiones relacionadas