Usando el programa winpdb se pueden debuggear scripts en Python de manera mas intuitiva que con el clásico pdb.
Una de las ventajas que tiene winpdb es la posibilidad de debuggear scripts que esten ejecutandose en remoto en algun servidor. De esta manera, se pueden debuggear no solo scripts en servidores de producción, por poner un ejemplo, sino también scripts que utilicen curses para manipular la pantalla.
winpdb se basa en una arquitectura de cliente-servidor que comunica al servidor (el cual ejecuta el script a debuggear en sí) a través de sockets con el cliente (el cual ejecuta la interfaz del debugger).
winpdb cuenta con dos programas para poder hacer el debuggeo:
- rpdb2 – que es la interfaz de consola o modo texto, y que puede ser usada como servidor del debugger también.
- winpdb – que es la interfaz gráfica
Para debuggear un script en remoto, hay que ejecutar lo siguiente en el servidor:
screen rpdb2 -s -d -r script.py
El cual utiliza el programa ‘screen’ para tener la salida del script python a debuggear en una pantalla dedicada.
El parámetro -s se usa en conjunto con screen.
El parámetro -d le indica a rpbd2 que se ejecute en modo servidor solamente, esperando a que algún cliente se conecte para poder hacer el debuggeo.
El parámetro -r permite conexiones remotas.
script.py es simplemente el path y nombre del script a debuggear.
Al ejecutar esta línea, el programa rpdb2 solicitará un password que deberá introducir el cliente también, y con eso asegurar la comunicación entre el cliente y el servidor.
Hecho esto, rpdb2 queda en espera de alguna conexión.
En el lado del cliente, se puede ejecutar rpdb2 para debuggear con la consola, o si se prefiere winpdb para hacerlo con una interfaz gráfica:
winpdb -oserverhost -a script.py
El parámetro -o va seguido de la dirección IP o nombre del servidor
El parámetro -a le indica a winpdb que al conectarse al servidor, adjunte el script script.py que se debe estar ya ejecutando en el servidor para poder debuggear con rpdb2.
Hecho esto, se solicitará el password que se indicó en rpdb2 y con eso la interfaz inicializará y conectará con el servidor y cargará el código fuente del script solicitado, con lo que ya puede comenzar a debuggearse…
Links:
winpdb – sitio oficial de winpdb, con el código fuente del programa, para instalarlo, y documentación.