Depuración de aplicaciones de .NET en equipos de placa única ARM

La depuración de aplicaciones .NET que se ejecutan en equipos de placa única basados en ARM como Raspberry Pi supone un desafío único. Si lo desea, puede instalar Visual Studio Code y el SDK de .NET en el dispositivo y desarrollar aplicaciones en modo local. Sin embargo, el rendimiento del dispositivo es tal que no se recomienda programar y depurar localmente. Además, la extensión de Visual Studio Code para C# no es compatible con los sistemas operativos ARM de 32 bits. Por tanto, la funcionalidad como IntelliSense y la depuración en Visual Studio Code en dispositivos ARM solo se admite en sistemas de 64 bits.

Por estos motivos, se recomienda encarecidamente desarrollar aplicaciones en un equipo de desarrollo y, después, implementar la aplicación en el dispositivo para la depuración remota. Si desea desarrollar y depurar aplicaciones en modo local en el dispositivo, necesita lo siguiente:

En el resto de este artículo, se describe cómo depurar aplicaciones de .NET en equipos de placa única de manera remota desde un equipo de desarrollo.

Importante

En el momento de escribir este artículo, la depuración remota de aplicaciones de .NET 7 en entornos linux-arm no es confiable y puede provocar que el proceso se cierre prematuramente. Este problema se está investigando. Las aplicaciones de .NET 6 que tienen como destino linux-arm y las aplicaciones de .NET 7 que tienen como destino linux-arm64 no se ven afectadas.

Depuración desde Visual Studio Code (multiplataforma)

Para la depuración de .NET en equipos de placa única desde Visual Studio Code, se requieren pasos de configuración en el equipo de placa única y en el archivo launch.json del proyecto.

Habilitación de SSH en el equipo de placa única

SSH es necesario para la depuración remota. Para habilitar SSH en Raspberry Pi, consulte Habilitación de SSH en la documentación de Raspberry Pi. Asegúrese de que ha configurado SSH sin contraseña.

Importante

En este ejemplo, es necesario configurar SSH sin contraseña en el dispositivo, ya que OpenSSH no permite pasar contraseñas en la línea de comandos. Si necesita usar una contraseña, considere la posibilidad de sustituir la herramienta Plink para ssh.

Instalación de Visual Studio Remote Debugger en un equipo de placa única

Desde una consola Bash en el equipo de placa única (en una sesión local o mediante SSH), ejecute el comando que se indica a continuación. Este comando permite descargar e instalar Visual Studio Remote Debugger en el dispositivo:

curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l ~/vsdbg

Configuración de launch.json en Visual Studio Code

En el equipo de desarrollo, agregue una configuración de inicio al archivo launch.json del proyecto. Si el proyecto no tiene un archivo launch.json, agregue uno; para ello, cambie a la pestaña Ejecutar, seleccione create a launch.json file (Crear un archivo launch.json) y después .NET o .NET Core en el cuadro de diálogo.

La nueva configuración de launch.json debe ser similar a la siguiente:

"configurations": [
    {
        "name": ".NET Remote Launch - Self-contained",
        "type": "coreclr",
        "request": "launch",
        "program": "~/sample/sample",
        "args": [],
        "cwd": "~/sample",
        "stopAtEntry": false,
        "console": "internalConsole",
        "pipeTransport": {
            "pipeCwd": "${workspaceRoot}",
            "pipeProgram": "ssh",
            "pipeArgs": [
                "pi@raspberrypi"
            ],
            "debuggerPath": "~/vsdbg/vsdbg"
        }
    },

Tenga en cuenta lo siguiente:

  • program es el archivo ejecutable que ha creado dotnet publish.
  • cwd es el directorio de trabajo que se va a usar al iniciar la aplicación en el dispositivo.
  • pipeProgram es la ruta de acceso a un cliente SSH en la máquina local.
  • pipeArgs son los parámetros que se van a pasar al cliente SSH. Asegúrese de especificar el parámetro de contraseña, así como el usuario pi en el formato <user>@<hostname>.

Implementar la aplicación

Implemente la aplicación como se describe en Implementación de aplicaciones de .NET en equipos de placa única de ARM. Asegúrese de que la ruta de acceso de implementación es la misma que se ha especificado en el parámetro cwd de la configuración de launch.json.

Inicio del depurador

En Visual Studio Code, en la pestaña Ejecutar y depurar, seleccione la configuración que agregó a launch.json y elija Iniciar depuración. La aplicación se inicia en el dispositivo. El depurador se puede usar para establecer puntos de interrupción, inspeccionar variables locales y mucho más.

Depuración desde Visual Studio en Windows

Visual Studio puede depurar aplicaciones .NET en dispositivos remotos mediante SSH. No se necesita ninguna configuración adicional en el dispositivo. Para obtener más información sobre el uso de Visual Studio para depurar .NET de forma remota, vea Depuración remota de .NET en Linux con SSH.

Asegúrese de seleccionar el proceso dotnet si va a depurar una implementación dependiente del marco. De lo contrario, el proceso se denominará igual que el archivo ejecutable de la aplicación.