PyConES 2023

Lo que un lector de pantalla te puede enseñar sobre la depuración remota en Python
06/10/2023 , Sala 0.3
Idioma: Español

El lector de pantalla NVDA es una aplicación Python empaquetada mediante Py2exe junto con algunas extensiones en C++ para acceder al sistema a bajo nivel y mejorar el rendimiento. Sus funcionalidades pueden extenderse mediante complementos que también se escriben en Python, por lo que es importante disponer de alguna forma de depurar el código tanto de los complementos como del núcleo de la aplicación.

Sin embargo, depurar código que se está ejecutando en un entorno empaquetado o embebido es una tarea complicada, especialmente si eres un programador con discapacidad visual y estás tratando de depurar tu propio lector de pantalla, pues alcanzar un breakpoint significa, literalmente, ¡congelar la herramienta de la que dependes para usar el ordenador!

En este taller explicaré cómo hice frente a este problema usando la librería debugpy de Microsoft para la depuración remota de Python. Primero resumiré el problema original y por qué no es posible usar la depuración «normal»; y luego veremos cómo aplicar esta técnica a un ejemplo simplificado de aplicación empaquetada con Py2exe, un aprendizaje que servirá también para cualquier otro entorno embebido independientemente del lenguaje anfitrión en el que está programada la aplicación principal.

Empezaremos con las nociones básicas de depuración local y poco a poco iremos viendo todo lo que hay que tener en cuenta al empaquetar la aplicación y preparar nuestros scripts para permitir la depuración remota, así como la creación de los distintos perfiles de depuración en Visual Studio Code.

Importante: si tú también quieres hacer los ejercicios que enseñaré durante el taller, asegúrate de tener instalado git (para clonar el repo), Python 3.7 o superior y Visual Studio Code con la extensión de Python.

Si nos sobra tiempo también me gustaría explorar otras posibilidades que ofrece esta técnica, como depurar Python embebido en programas cuyo lenguaje principal no es Python, o corriendo en otros sistemas operativos distintos a aquel en el que usamos VSCode.


Temática

Otra

Nivel de la propuesta

Intermedia (es necesario entender las bases relacionadas para entrar en detalle)

Soy un apasionado de la accesibilidad y me dedico a ello como consultor freelance y formador desde hace un montón de años; y desde hace alguno menos explorando el uso de Python para hacer el bien 😉