Depuración de varios procesos

Es muy común que las soluciones modernas desarrolladas en Visual Studio para Mac tengan varios proyectos en distintas plataformas de destino. Por ejemplo, una solución podría contener un proyecto de aplicación para dispositivos móviles basado en los datos proporcionados por un proyecto de servicio web. Al desarrollar esta solución, un desarrollador podría tener que ejecutar ambos proyectos al mismo tiempo con el fin de solucionar errores. A partir de la versión Cycle 9 de Xamarin, ahora es posible que Visual Studio para Mac depure varios procesos que se ejecutan al mismo tiempo. Esto permite establecer puntos de interrupción, inspeccionar variables y ver los subprocesos en más de un proyecto en ejecución. Esto se conoce como depuración de varios procesos.

En esta guía se tratan algunos de los cambios realizados en Visual Studio para Mac para admitir la depuración de varios procesos, cómo configurar las soluciones para depurar múltiples procesos y cómo adjuntarlos a procesos existentes con Visual Studio para Mac.

Requisitos

La depuración de varios procesos requiere Visual Studio para Mac.

Cambios en el IDE

Para ayudar a los desarrolladores a depurar varios procesos, Visual Studio para Mac incluye algunos cambios en la interfaz de usuario. Visual Studio para Mac tiene una barra de herramientas de depuración actualizada y una nueva sección Configuración de soluciones en la carpeta Opciones de solución. Además, el panel de subprocesos muestra ahora los procesos en ejecución y los subprocesos para cada proceso. Visual Studio para Mac también muestra varios paneles de depuración, uno para cada proceso, para ciertas cosas como Resultado de la aplicación.

Configuraciones de soluciones

De forma predeterminada, Visual Studio para Mac mostrará un proyecto individual en el área Configuración de soluciones de la barra de herramientas de depuración. Al iniciar una sesión de depuración, este es el proyecto que Visual Studio para Mac iniciará y al que adjuntará el depurador.

Para iniciar y depurar varios procesos en Visual Studio para Mac, es necesario crear una configuración de soluciones. Una configuración de soluciones describe qué proyectos de una solución deben incluirse al iniciar una sesión de depuración con un clic en el botón Iniciar o al pulsar ⌘↩ (Cmd-Entrar). La captura de pantalla siguiente es un ejemplo de una solución en Visual Studio para Mac que tiene varias configuraciones de soluciones:

A solution with multiple solution configurations

Partes de la barra de herramientas de depuración

La barra de herramientas de depuración ha cambiado para permitir que se pueda seleccionar una configuración de soluciones a través de un menú emergente. En esta captura de pantalla se muestran las partes de la barra de herramientas de depuración:

The parts of the debug toolbar

  1. Configuración de soluciones: para establecer la configuración de soluciones, haga clic en la configuración de soluciones, en la barra de herramientas de depuración, y seleccione la configuración en el menú emergente:

    A sample popup with solution configurations

  2. Destino de compilación: identifica el destino de compilación para los proyectos. Esto no ha cambiado con relación a versiones anteriores de Visual Studio para Mac.

  3. Destinos de dispositivo: esta opción permite seleccionar los dispositivos en los que se va a ejecutar la solución. Es posible identificar un dispositivo o un emulador individual para cada proyecto:

    Popup showing the devices for a project

Múltiples paneles de depuración

Cuando se inicia la configuración de soluciones múltiples, algunos de los paneles de Visual Studio para Mac aparecerán varias veces, una para cada proceso. Por ejemplo, en la captura de pantalla siguiente se muestran dos paneles de Resultado de la aplicación para una solución que está ejecutando dos proyectos:

Output Pad for a solution configuration

Varios procesos y el subproceso activo

Cuando se encuentra un punto de interrupción en un proceso, dicho proceso detendrá la ejecución, mientras que los demás procesos continúan ejecutándose. En un escenario de un solo proceso, Visual Studio para Mac puede mostrar fácilmente información como subprocesos, variables locales o resultado de la aplicación en un único conjunto de paneles. En cambio, cuando hay varios procesos con múltiples puntos de interrupción, y posiblemente varios subprocesos, puede resultar abrumador para el desarrollador hacer frente a la información de una sesión de depuración que está intentando mostrar toda la información de todos los subprocesos (y procesos) a la vez.

Para solucionar este problema, Visual Studio para Mac solo mostrará la información de un subproceso a la vez, conocido como el subproceso activo. El primer subproceso que se detiene en un punto de interrupción se considera el subproceso activo. El subproceso activo es el subproceso que es el foco de atención del desarrollador. El subproceso activo dispondrá de comandos de depuración, como Paso a paso por procedimientos ⇧⌘O (Mayús-Cmd-O).

El panel de subproceso mostrará la información de todos los procesos y subprocesos que se encuentran bajo comprobación en la configuración de soluciones y proporcionará indicaciones visuales sobre cuál es el subproceso activo:

Thread pad for a solution configuration

Los subprocesos se agrupan por el proceso que los hospeda. El nombre del proyecto y el identificador del subproceso activo se muestran en negrita, y aparece una flecha hacia la derecha en el medianil junto al subproceso activo. En la captura de pantalla anterior, el subproceso n.º 1 en el proceso con identificador 48703 (FirstProject) es el subproceso activo.

Al depurar varios procesos, es posible cambiar el subproceso activo para ver la información de depuración de ese proceso (o subproceso) mediante el uso del panel de subproceso. Para cambiar el subproceso activo, seleccione el subproceso que quiera en el panel de subproceso y luego haga doble clic en él.

Ejecución paso a paso del código cuando se detienen varios proyectos

Cuando dos (o más) proyectos tienen puntos de interrupción, Visual Studio para Mac pausará ambos procesos. Solo es posible recorrer el código paso a paso por procedimientos en el subproceso activo. El otro proceso se pausará hasta que un cambio de ámbito haga posible que el depurador cambie el foco del subproceso activo. Por ejemplo, fíjese en la siguiente captura de pantalla en que Visual Studio para Mac depura dos proyectos:

Visual Studio for Mac debugging two projects

En esta captura de pantalla, cada solución tiene su propio punto de interrupción. Cuando se inicia la depuración, el primer punto de interrupción que se encuentra está en la línea 10 de MainClass en SecondProject. Dado que ambos proyectos tienen puntos de interrupción, cada proceso se detiene. Una vez que se encuentra el punto de interrupción, cada invocación del paso a paso por procedimientos provocará que Visual Studio para Mac recorra el código paso a paso por procedimientos en el subproceso activo.

La ejecución paso a paso del código está limitada al subproceso activo, por lo que Visual Studio para Mac recorrerá paso a paso, una línea de código a la vez, mientras que el otro proceso aún está en pausa.

Si tomamos la captura de pantalla anterior como ejemplo, cuando el bucle for ha finalizado, Visual Studio para Mac permitiría que FirstProject se ejecutara hasta que se encontrara el punto de interrupción en la línea 11 en MainClass. Para cada comando de paso a paso por procedimientos, el depurador avanzaría línea a línea en FirstProject, hasta que los algoritmos heurísticos internos de Visual Studio para Mac vuelvan a cambiar el subproceso activo a SecondProject.

Si solo uno de los proyectos tuviera establecido un punto de interrupción, únicamente se pausaría ese proceso. El otro proyecto continuaría ejecutándose hasta que el desarrollador lo pausara o se agregara un punto de interrupción.

Pausar y reanudar un proceso

Para pausar o reanudar un proceso, haga clic con el botón derecho en el proceso y seleccione Pausar o Reanudar en el menú contextual:

Pause or resume in the Thread pad

La apariencia de la barra de herramientas de depuración cambiará según el estado de los proyectos que se están depurando. Cuando se ejecuten varios proyectos, la barra de herramientas de depuración mostrará los botones Pausar y Reanudar en los casos en que haya al menos un proyecto que se esté ejecutando y un proyecto en pausa:

Debug toolbar

Al hacer clic en el botón Pausar en la barra de herramientas de depuración, se detendrán todos los procesos que se están depurando, mientras que al hacer clic en el botón Reanudar se reanudarán todos los procesos en pausa.

Depurar un segundo proyecto

También es posible depurar un segundo proyecto una vez que Visual Studio para Mac inicia el primer proyecto. Una vez iniciado el primer proyecto, *haga clic con el botón derecho en el proyecto, en el Panel de solución, y seleccione Iniciar la depuración de elemento:

Start Debugging Item

Crear una configuración de soluciones

Una configuración de soluciones indica a Visual Studio para Mac qué proyecto se debe ejecutar cuando se inicia una sesión de depuración con el botón Iniciar. Puede haber más de una configuración de soluciones por solución. Esto hace posible especificar qué proyectos se ejecutan cuando se depura el proyecto.

Para crear una nueva configuración de soluciones en Xamaring Studio:

  1. Abra el cuadro de diálogo Opciones de solución en Visual Studio para Mac y seleccione Ejecutar> Configuraciones:

    Solution Configuration in the Solution Options dialog

  2. Haga clic en el botón Nuevo, escriba el nombre de la nueva configuración de soluciones y haga clic en Crear. La nueva configuración de soluciones aparecerá en la ventana Configuraciones:

    Naming a new solution configuration

  3. Seleccione la nueva configuración de ejecución en la lista de configuraciones. En el cuadro de diálogo Opciones de solución se mostrará cada proyecto de la solución. Marque cada proyecto que debe iniciarse al iniciar una sesión de depuración:

    Selecting the project to start

La configuración de soluciones MultipleProjects aparecerá ahora en la barra de herramientas de depuración, lo que permite que un desarrollador depure simultáneamente los dos proyectos.

Resumen

En esta guía se ha tratado la depuración de varios procesos en Visual Studio para Mac. Se han detallado algunos de los cambios en el IDE para admitir la depuración de varios procesos y se han descrito algunos de los comportamientos asociados.