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 :

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éé par dotnet 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’utilisateur pi 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.