Déboguer des applications .NET sur des ordinateurs monocartes ARM
Le débogage d’applications .NET s’exécutant sur des ordinateurs monocartes ARM comme Raspberry Pi présente un défi unique. Si vous le souhaitez, vous pouvez installer Visual Studio Code et le Kit de développement logiciel (SDK) .NET sur l’appareil et développer localement. Toutefois, les performances de l’appareil sont telles que le codage et le débogage en local ne sont pas idéaux. En outre, l’extension Visual Studio Code pour C# n’est pas compatible avec les systèmes d’exploitation ARM 32 bits. Par conséquent, les fonctionnalités telles qu’IntelliSense et le débogage dans Visual Studio Code sur les appareils ARM ne sont prises en charge que dans les systèmes 64 bits.
Pour ces raisons, il est fortement recommandé de développer votre application sur un ordinateur de développement, puis de déployer l’application sur l’appareil pour le débogage à distance. Si vous souhaitez développer et déboguer localement sur l’appareil, vous devez procéder comme suit :
- Un système d’exploitation 64 bits avec un environnement de bureau, tel que Raspberry Pi OS (64 bits).
- Visual Studio Code avec l’extension C#.
- Désactivez l’accélération matérielle.
- Kit de développement logiciel (SDK) .NET version 6.0 ou ultérieure.
- Installez à l’aide du script dotnet-installcomme dans un déploiement dépendant du framework. Veillez à ajouter une variable d’environnement
DOTNET_ROOT
et à ajouter le répertoire .dotnet à$PATH
.
- Installez à l’aide du script dotnet-installcomme dans un déploiement dépendant du framework. Veillez à ajouter une variable d’environnement
Le reste de cet article explique comment déboguer des applications .NET sur des ordinateurs monocartes à distance à partir d’un ordinateur de développement.
Important
À partir de cette écriture, le débogage à distance d’applications .NET 7 dans des environnements linux-arm
n’est pas fiable et peut entraîner la fin prématurée du processus. Ce problème est en cours de résolution. Les applications .NET 6 qui ciblent linux-arm
et les applications .NET 7 qui ciblent linux-arm64
ne sont pas affectées.
Déboguer à partir de Visual Studio Code (multiplateforme)
Le débogage de .NET sur des ordinateurs monocartes à partir de Visual Studio Code nécessite des étapes de configuration sur les ordinateurs monocartes et dans le fichier launch.json du projet.
Activer SSH sur l’ordinateur monocarte
SSH est requis pour le débogage à distance. Pour activer SSH sur Raspberry Pi, reportez-vous à Activer SSH dans la documentation Raspberry Pi. Vérifiez que vous avez configuré SSH sans mot de passe.
Important
Cet exemple vous oblige à configurer SSH sans mot de passe sur votre appareil, car OpenSSH ne prend pas en charge le transfert de mots de passe sur la ligne de commande. Si vous devez utiliser un mot de passe, envisagez de remplacer l’outil Plink par ssh.
Installer le Débogueur distant Visual Studio sur l’ordinateur monocarte
Dans une console Bash sur l’ordinateur monocarte (dans une session locale ou via SSH), exécutez la commande suivante. Cette commande télécharge et installe le Débogueur distant Visual Studio sur l’appareil :
curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l ~/vsdbg
Configurer launch.json dans Visual Studio Code
Sur l’ordinateur de développement, ajoutez une configuration de lancement au launch.json du projet. Si le projet n’a pas de fichier launch.json, ajoutez-en un en basculant vers l’onglet Exécution, en sélectionnant créer un fichier launch.json et en sélectionnant .NET ou .NET Core dans la boîte de dialogue.
La nouvelle configuration dans launch.json doit ressembler à l’une des options suivantes :
"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"
}
},
Notez les points suivants :
program
est le fichier exécutable créé pardotnet publish
.cwd
est le répertoire de travail à utiliser lors du lancement de l’application sur l’appareil.pipeProgram
est le chemin d’accès à un client SSH sur l’ordinateur local.pipeArgs
sont les paramètres à transférer au client SSH. Veillez à spécifier le paramètre de mot de passe, ainsi que l’utilisateurpi
au format<user>@<hostname>
.
Déployer l’application
Déployez l’application comme décrit dans Déployer des applications .NET sur les ordinateurs monocartes ARM. Vérifiez que le chemin d’accès au déploiement est le même chemin spécifié dans le paramètre cwd
dans la configuration launch.json .
Lancez le débogueur
Dans Visual Studio Code, sous l’onglet Exécuter et Déboguer, sélectionnez la configuration que vous avez ajoutée à launch.json et sélectionnez Démarrer le débogage. L’application se lance sur l’appareil. Le débogueur peut être utilisé pour définir des points d’arrêt, inspecter les locaux, etc.
Déboguer à partir de Visual Studio sur Windows
Visual Studio peut déboguer des applications .NET sur des appareils distants via SSH. Aucune configuration spécialisée n’est requise sur l’appareil. Pour plus d’informations sur l’utilisation de Visual Studio pour déboguer .NET à distance, consultez Déboguer à distance sur Linux à l’aide de SSH.
Veillez à sélectionner le processus dotnet
si vous déboguez un déploiement dépendant du framework. Dans le cas contraire, le processus sera nommé de la même façon que l’exécutable de l’application.