Depurando código PyQGIS con Eclipse en Debian

En los dos post anteriores (1, 2) preparamos Eclipse en Debian para depurar código de plugins en QGIS. En este se va a ejemplificar el uso de la herramienta de depuración de Eclipse+PyDev utilizando el plugin “Hello World” de QGIS basado en el ejemplo del libro “QGIS Python Programming Cookbook” de Joel Lawhead (pp. 16). Por tanto, instálelo previamente.

Para ello, inicie Eclipse y realice la siguiente secuencia en el menú File -> New -> Project -> General -> Project -> Next; hasta que aparezca el diálogo de nuevos proyectos. Nombre al nuevo proyecto como HelloWorldPlugin y luego haga click en ‘Finish’; tal como se presenta en la imagen siguiente:

eclipse1

Después de hacer click en ‘Finish’, se observa el folder del nuevo proyecto en el ‘Project Explorer’. En el menú contextual que aparece al hacer click derecho con el ratón, seleccione New -> Folder -> Advanced -> Link to alternate location (Linked folder) para navegar (‘Browse…’) hasta la ruta del plugin ‘Hello World’ en QGIS:

    /home/zeito/.qgis2/python/plugins/HelloWorld

La imagen siguiente sirve de referencia:

eclipse2

Una vez hecho click en ‘Finish’, aparecerá un árbol de directorios donde abriremos el archivo HelloWord.py. En Window -> Open Perspective -> Other seleccione ‘Debug’:

eclipse6

En la línea 32 del código, en la parte gris a la izquierda, haga doble click para establecer un ‘break point’ (que aparecerá como un ícono de color verde). Después, en el menú Pydev (ver imagen siguiente), seleccione ‘Start Debug Server’ y como respuesta, en la Consola, aparecerá el texto: “Debug Server at port: 5678”.

eclipse7

Iniciamos QGIS, click en el icono del ‘Remote Debugger’ y luego en ‘Connect’. La respuesta es ahora “Debugging connection activated’; tal como se presenta en la imagen siguiente:

eclipse8

Ahora se ejecuta el plugin “Hello World” y verificamos en Eclipse que la ejecución se detuvo en la línea 32; tal como lo resalta el color verde de la imagen siguiente.

eclipse5

En el menú Run -> Resume haremos que el proceso continue y aparezca la QMessageBox del plugin con el mensaje “Hello, World”.

Después de haber experimentado el hecho de que mientras se mantiene la acción del “break point” en Eclipse el comportamiento de QGIS hace que parezca “colgado”, prefiero utilizar la Python Console como debugger de plugins. Es perfectamente factible y útil; sobretodo cuando se utiliza conjuntamente con ‘Reload Plugin’.

Esta entrada fue publicada en PyQGIS, QGIS, Software Libre. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s