Depuración de aplicaciones .NET en Raspberry Pi
La depuración de aplicaciones .NET que se ejecutan en dispositivos IoT basados en ARM como Raspberry Pi supone un desafío único. Es posible desarrollar aplicaciones .NET en dispositivos ARM. Pero OmniSharp, que es necesario para depurar aplicaciones .NET fuera de Visual Studio, no es compatible con los dispositivos ARM. Como resultado, las aplicaciones se deben depurar de forma remota desde una plataforma compatible.
Depuración desde Visual Studio Code (multiplataforma)
Para la depuración de .NET en Raspberry Pi desde Visual Studio Code se necesitan pasos de configuración en Raspberry Pi y en el archivo launch.json del proyecto.
Habilitación de SSH en Raspberry Pi
SSH es necesario para la depuración remota. Para habilitar SSH, consulte Habilitación de SSH en la documentación de Raspberry Pi.
Instalación de Visual Studio Remote Debugger en Raspberry Pi
Desde una consola de Bash en Raspberry Pi (de forma local o mediante SSH), ejecute el comando que se indica a continuación. Este comando permite descargar e instalar Visual Studio Remote Debugger en Raspberry Pi:
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": "C:\\Program Files\\PuTTY\\PLINK.EXE",
"pipeArgs": [
"-pw", "raspberry",
"pi@raspberrypi"
],
"debuggerPath": "~/vsdbg/vsdbg"
}
},
Tenga en cuenta lo siguiente:
programes el archivo ejecutable que ha creadodotnet publish.cwdes el directorio de trabajo que se va a usar al iniciar la aplicación en Pi.pipeProgrames la ruta de acceso a un cliente SSH en la máquina local.pipeArgsson los parámetros que se van a pasar al cliente SSH. Asegúrese de especificar el parámetro de contraseña, así como el usuariopien el formato<user>@<hostname>.
Importante
En los ejemplos anteriores, se usa plink, un componente del cliente SSH PuTTY. En su lugar se puede usar OpenSSH, que se incluye en las versiones recientes de Windows y Linux. Pero OpenSSH no admite el envío de contraseñas como un parámetro de la línea de comandos. Para usar OpenSSH, configure el dispositivo Raspberry Pi para el acceso SSH sin contraseña.
Implementar la aplicación
Implemente la aplicación como se describe en Implementación de aplicaciones .NET en Raspberry Pi. 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 la pestaña Ejecutar, seleccione la configuración que agregó a launch.json y seleccione Iniciar depuración. La aplicación se inicia en Raspberry Pi. El depurador se puede usar para establecer puntos de interrupción, inspeccionar variables locales y mucho más.
Referencias
Depuración remota en Linux ARM (documentación de OmniSharp)
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.