2011-11-22 13 views
5

suspender a menudo haciendo estos pasos y quiere optimizar la velocidad de depuración:depuración PyDev + Eclipse - Código no vuelve a cargar después de cambiar el código en el punto de interrupción/modo de

  1. estoy fijando algunos puntos de interrupción.
  2. Estoy ejecutando la aplicación Google Appengine (Python 2.5.2+).
  3. Cuando se produce un punto de interrupción, a menudo cambio el código para corregir errores.
  4. Después de cambio de código desea probar otra vez, pero no es un problema si cambio de código en el punto de interrupción/modo de suspender la aplicación no hace cambios con mi código cambia - por lo que requiere una recarga lenta.

¿Alguien tiene una idea de cuál es la causa raíz de forzar la recarga después de suspender o es Bug/Limitación de PyDev?

Respuesta

5

La forma en que funciona la depuración no es ejecutando la fuente línea por línea. La depuración "compila" su fuente a bytecode (los archivos .pyc) y ejecuta esos, no su fuente.

La depuración solo realiza un seguimiento de qué parte de los archivos .pyc corresponde a qué línea de sus .py y muestra esa información para su conveniencia, pero el archivo .py no es lo que el depurador está utilizando para ejecutar el programa.

Por lo tanto, si cambia el archivo fuente/.py y desea que el depurador reconozca esos cambios, primero debe "recompilar" los archivos .pyc.

HTH!

+0

Así que sugieres que el problema es que el eclipse no reconstruye el código después del cambio de fuente, por lo que no se genera * .pyc nuevo a partir de * .py. Lo comprobaré pronto. – Chameleon

+0

@Chameleon: cuando se ejecuta un programa python, se inicia un subproceso que ejecuta el código pyc que estaba disponible en ese momento (en la mayoría de los casos, este código se carga en la memoria antes de ejecutarse). No puede modificar ese código una vez que se inicia el programa. Lo único que puede hacer es DETENER la ejecución, generar nuevos archivos pyc y ejecutarlos en su lugar con un NUEVO lanzamiento. En otras palabras, lo que está haciendo PyDev es la única forma de eliminar errores. La lentitud adicional se debe probablemente al hecho de que Eclipse tiene la velocidad de un bradypus lame ... :( – mac

+0

Cuando el programa está cargado, vi que hay dos rutas si modifico el código y está ** no ** en modo de punto de interrupción - altera el programa o está en modo de punto de interrupción - no altera el programa. Intentaré forzar la reconstrucción hoy en modo de punto de interrupción, debería ser más rápido que volver a cargar. Si Pydev soportará tal reconstrucción, será más rápido después de la alteración del código – Chameleon

Cuestiones relacionadas