Una de las cosas que siempre me han encantado de Xojo es su capacidad de compilador cruzado. Esto es, utilizar tu sistema operativo favorito para ejecutar el IDE y desarrollar en él, por ejemplo macOS, con independencia de cuál sea el sistema operativo de despliegue real para la aplicación que estés creando, por ejemplo Windows o Linux. Gracias a los Stub de depuración proporcionados por Xojo en versiones de 32 y 64 bits, sólamente deberás de ejecutar y configurar dicho componente sobre el equipo o equipos de red (o a cientos de kilometros) sobre los que quieras depurar la aplicación… ¡y listo! Este artículo se centra precisamente en esto, en mostrar las capacidades del compilador cruzado incluido con Xojo, así como de sus capacidades de configuración, funcionamiento y algunas consideraciones a tener en cuenta para las tareas de depuración como cuando, por ejemplo, se trata de depurar aplicaciones CGI para la Web. Este es un artículo, traducido al castellano, cuya versión original en inglés está disponible en la web de desarrolladores de Xojo.
Por omisión, cuando ejecutas tu proyecto este se ejecuta sobre la misma plataforma que estás utilizando. Por tanto, si desarrollas en macOS, entonces cuando haces clic sobre el botón Run el proyecto se ejecutará en macOS, y procederás a ejecutar las labores de depuración sobre la misma máquina local en la que se está ejecutando el IDE.
Dado que Xojo es una herramienta de desarrollo multiplataforma, probablemente querrás ejecutar tus poyectos también sobre otros sistemas operativos con el objeto de realizar la depuración sobre ellas; después de todo, algunos comportamientos varían en función del sistema operativo sobre el que se estén ejecutando. Y esto es algo que puedes llevar a cabo gracias al Depurador Remoto, incluido en Xojo en dos versiones: Desktop y Consola.
La versión Desktop se utiliza para la depuración remota sobre cualquier sistema operativo que tenga una interfaz de usuario (UI) de escritorio, y puede emplearse tanto para depurar aplicaciones de Escritorio como de Consola. La versión de Consola se utiliza para depurar de forma remota sobre un sistema operativo que no ofrezca una UI, como pueda ser por ejemplo el caso de los servidores. Este puede depurar aplicaciones de consola y web.
Configuración del Depurador Remoto
El Depurador Remoto (Remote Debugger) es una app que te permite ejecutar tu proyecto sobre una plataforma de despliegue distinta a la que se esté utilizando para el desarrollo. Xojo comunica con esta de modo que cuando se ejecuta el proyecto este se envía a la plataforma de destino en vez de ejecutarse localmente. Generalmente, cuando se ejecuta un proyecto desde Xojo (Project > Run
), este lo hace de forma local. Si tienes el Depurador Remoto configurado, puedes optar sin embargo por enviar tu compilación de depuración sobre un equipo remoto, lo que resulta increíblemente útil a la hora de probar aplicaciones multiplataforma. Esta compilación remota mantendrá en todo momento la comunicación con Xojo, de modo que podrás acceder al depurador y realizar las pruebas como si se estuviese ejecutando localmente.
Depurador Remoto Desktop
En el equipo remoto tendrás que ejecutar la app Remote Debugger Desktop, incluido como parte de la instalación de Xojo. Hay diferentes versiones para estas plataformas:
- macOS: 32-bit y 64-bit
- Windows: 32-bit y 64-bit
- Linux: 32-bit y 64-bit
- Linux ARM: 32-bit
Copia la versión que necesites sobre la plataforma que estés usando.
Ten en cuenta que sólo puedes usar el Depurador Remoto de 64 bits sobre los sistemas operativos de 64 bits. Un Depurador Remoto de 64 bits puede ejecutar tanto una aplicación de 32 como de 64 bits. Cuando se utiliza el Depurador Remoto de 64 bits, se emplean los ajustes de compilación para determinar si se envía una compilación de 32 o de 64 bits.
Como resulta lógico, el Depurador Remoto de 32 bits sólo podrá ejecutar apps de 32 bits.
El Depurador Remoto Desktop tienen una ventana de Opciones que permite configurar los siguientes ajustes.
- Name: El nombre del equipo. Este aparece en el Equipo de Desarrollo, bajo las preferencias de Remote Debugger de Xojo.
- Password: Una contraseña opcional utilizada para conectarse al Depurador Remoto.
- Download Location: Haz clic en el botón
Choose
para definir la ubicación sobre la que se descargará y ejecutará la aplicación recibida. Asegúrate de contar con privilegios de acceso de lectura/escritura para la ubicación indicada. - Network Interface: Si tienes más de una interfaz de red, entonces puedes elegir una en este apartado. Por lo general utilizarás el valor predeterminado “Default”.
- Port: El puerto por omisión es el 44553; de modo que tendrás que asegurarte de que esté abierto en el firewall tanto para las conexiones UDP como TCP.
- Max Connections: Este ajuste permite establecer la máxima cantidad de conexiones concurrentes sobre el Depurador Remoto.
- Public: Permite que el Depurador Remoto aparezca en el equipo de desarrollo bajo las preferencias Remote Debugger de Xojo.
Una vez configuradas las opciones, haz clic en OK
y deja en ejecución la app Remote Debugger Desktop.
La caja de verificación “Launch executable after receiving” se utiliza para desactivar la ejecución automática de la aplicación tras ser recibida por el Depurador Remoto. Es probable que quieras desactivarlo si tienes que configurar manualmente algunas cosas concretas sobre el equipo remoto (copiar archivos o carpetas, iniciar una aplicación adicional, etc.) antes de que deba de ejecutarse la aplicación a depurar.
Si estás utilizando un firewall sobre el equipo remoto, asegúrate de que esté abierto el puerto 44553 tanto para las conexiones UDP como TCP.
Si mantienes pulsada la tecla Shift (Mayúsculas móviles) al ejecutar la app Remote Debugger Stub, entonces se creará un archivo “Stub Log” en el escritorio con información de registro que te permitirá resolver posibles problemas de configuración del Depurador Remoto.
Depurador Remoto de Consola
La versión de consola puede depurar apps de consola, aplicaciones web standalone y aplicaciones Web CGI sobre equipos remotos que carezcan de interfaces de usuario (como pueda ser el caso de los servidores). Actualmente sólo puede utilizar sobre la red local (o bien mediante conexión VPN).
Tendrás que ejecutar la app Remote Debugger Console sobre el equipo remoto, incluida como parte de la instalación de Xojo. Hay varias versiones para estas plataformas:
- macOS: 32-bit and 64-bit
- Windows: 32-bit and 64-bit
- Linux: 32-bit and 64-bit
- Linux ARM: 32-bit
Copia la versión que necesites sobre la plataforma que estés usando.
Si estás intentando depurar una app CGI, configura el Depurador Remoto para que no se ejecute automáticamente (en las Opciones) y define la ruta para que apunte a la ubicación en la que deben instalarse las apps CGI para que puedan funcionar en el servidor web. El servidor web ejecutará la app de depuración cuando se visite el URL correspondiente en el navegador.
Ten en cuenta que sólo puedes usar el Depurador Remoto de 64 bits sobre sistemas operativos de 64 bits. Un Depurador Remoto de 64 bits puede ejecutar tanto apps de 32 como de 64 bits. Cuando se usa el Depurador Remoto de 64 bits, se emplearán los ajustes de compilación para el despliegue a la hora de determinar si ha de enviarse una compilación de 32 o de 64 bits.
Como es lógico, el Depurador Remoto de 32 bits sólo puede ejecutar apps de 32 bits.
El depurador remoto de ARM no puede iniicar automáticamente las apps de consola. Tendrás que ejecutarlas manualmente desde el Terminal una vez que se hayan enviado a la Raspberry Pi.
La aplicación Remote Debugger Consola funciona desde el Terminal o la línea de comandos. Cuando lo ejecutes por primera vez accederás a las opciones de configuración:
- Machine Name: El nombre del equipo.
- Download Directory: La ubicación sobre la cual descargar la app para ejecutarla. Asegúrate de contar con acceso de lectura/escritura para dicha ubicación.
- IP Address: Indica la Dirección IP en la cual escuchar (debe coincidir con la dirección IP disponible en el equipo).
- Maximum Connections: Indica la cantidad máxima de conexiones.
- Auto Launch: Permitir si el depurador remoto ejecuta automáticamente la app tras recibirla.
- Public: Indica si el depurador remoto es visible de forma pública.
- Password: Indica opcionalmente un password para la conexión.
Estos ajustes se guardan en el archivo RDS.config en la misma carpeta en la que se encuentra la app Console Remote Debugger.
También puedes proporcionar estas y otras opciones a través de la línea de comandos. Utiliza el argumento --help
para obtener un listado con todas las opciones disponibles desde la línea de comandos.
Configuración del Equipo de Desarrollo
En el equipo de desarrollo tendrás que configurar Xojo de modo que pueda ver el Depurador Remoto. En Preferencias, selecciona la opción Debugger. Aquí verás un listado correspondiente a los equipos remotos configurados. También puedes ver esta lista accediendo a Project > Run Remotely > Setup
.
Haz clic en el botón Add
para agregar un equipo remoto. En función de cual sea tu configuración de red, puede que el equipo remoto aparezca como un equipo remoto público. Si es así, sólo has de hacer clic sobre su nombre y pulsar sobre OK
para añadirlo. Si no es así, tendrás que introducir manualmente su dirección IP (indicada por la app Remote Debugger en el equipo remoto) y asignarle un nombre.
Si estás usando un firewall en tu equipo de desarrollo, tendrás que asegurarte de que esté abierto el puerto 44553 tanto para las conexiones UDP y TCP, así como el puerto 13897 para las conexiones TCP.
Nota: el software de máquinas virtuales, como por ejemplo VMware Fusion, Parallel Desktop, VMware Desktop y Microsoft Virtual PC funcionan bien con la depuración remota, si bien tendrás que tener tu red configurada con la opción “Bridged Networking”.
Depuración Remota
Ahora puedes probar a ejecutar un proyecto en remoto. Crea un nuevo proyecto Desktop en el equipo de desarrollo.
Para ejecutar el proyecto en remoto, selecciona la opción Project > Run Remotely
y haz clic sobre el nombre del equipo, en vez de seleccionar la opción Project > Run
(o hacer clic sobre el botón Run de la barra de herramientas). Tu proyecto se compilará y linkará como de costumbre, pero ahora verás un paso adicional durante el cual esta compilación de depuración se envía a la app del Depurador Remoto en el equipo remoto.
Una vez que la app Remote Debugger haya recibido la compilación a depurar, este la ejecutará. Interactúa con la app sobre el equipo remoto, y una vez que alcances cualquier punto de parada definido, saltará el depurador sobre el equipo de desarrollo.
Máquinas Virtuales
Microsoft dispone de varias versiones de Windows para pruebas, y que puedes utilizar en combinación con tus máquinas virtuales para probar tus apps de Xojo.
Las distribuciones de Linux son gratuitas por lo general, y funcionan correctamente sobre la mayoría de las máquinas virtuales.
Puedes ejecutar macOS 10.7 y posterior sobre una máquina virtual, pero sólo si la máquina virtual está funcionando sobre un Mac.
Estos son los productos de Máquinas Virtuales más utilizados por lo general:
- VirtualBox
- VMware Fusion
- Parallels Desktop
- Virtual PC
Información adicional sobre depuración
Puedes encontrar más información sobre el funcionamiento del Depurador de Xojo (incluyendo un vídeo), en esta entrada del blog; mientras que en esta otra podrás obtener información sobre el funcionamiento del Perfilador de Código, con el que podrás ver los tiempos consumidos en la ejecución de cada uno de los métodos para detectar posibles cuellos de botella que se puedan optimizar.