2009-10-23 8 views
6

Soy nuevo en Python y no he podido averiguar si esto es posible o no.Depuración de Python: edición de código sobre la marcha

Estoy utilizando el complemento PyDev en Eclipse, y básicamente todo lo que quiero saber es si es posible editar el código mientras está sentado en un punto de interrupción. Es decir. Edita código mientras estás depurando.

Esto me permite hacer esto en este momento, pero parece que todavía está ejecutando la línea de código que existía antes de hacer cambios.

Además, ¿puede arrastrar la ejecución del programa hacia atrás como puede hacerlo en VBA y C#, por ejemplo?

Si cualquiera de estos es posible, ¿cómo puedo habilitarlos?

Respuesta

2

Cuando inicie un programa de Python, se compilará en bytecode (y posiblemente se guarde como archivo .pyc). Eso significa que puede cambiar la fuente, pero como no "abre" nuevamente la fuente, el cambio no se realizará.

Existen sistemas como TurboGears (un marco web) que detectan estos cambios y se reinician, pero eso probablemente confundirá al depurador.

Retroceder en el tiempo tampoco es posible actualmente ya que el intérprete de códigos de bytes necesitaría soporte para esto.

+0

Es cierto que no se puede retroceder en el tiempo, y también que el depurador tiene un único subproceso y no puede soportar un reinicio, pero su título, "esto no es posible con Python en este momento" es inexacto, como @nikow señala. – jMyles

4

PyDev soporta esto hasta cierto punto desde la versión 1.4.8, vea change notes y el correspondiente blog entry.

+0

No veo las referencias de las que está hablando. ¿Puedes señalarlos más específicamente? Suena emocionante; Ni siquiera había tenido conocimiento de la nueva versión de PyDev hasta que tu respuesta me llamó la atención, así que gracias. :-) – jMyles

+0

He arreglado el segundo enlace. – nikow

2

Puede ejecutar comandos arbitrarios en la consola durante el punto de interrupción. Para mis necesidades, esto normalmente logra el mismo propósito que codificar en vivo, aunque lo hago con él era tan elegante como simplemente usar el editor.

Cuestiones relacionadas