Debuggen von .NET-Apps auf ARM-Single-Board-Computern

Das Debuggen von .NET-Apps, die auf ARM-basierten SBCs wie dem Raspberry Pi ausgeführt werden, stellt eine besondere Herausforderung dar. Bei Bedarf können Sie Visual Studio Code und das .NET SDK auf dem Gerät installieren und lokal entwickeln. Das lokale Programmieren und Debuggen ist aufgrund der Leistung des Geräts jedoch nicht ideal. Darüber hinaus ist die Visual Studio Code-Erweiterung für C# nicht mit 32-Bit-ARM-Betriebssystemen kompatibel. Daher werden Funktionen wie IntelliSense und Debuggen in Visual Studio Code auf ARM-Geräten nur in 64-Bit-Systemen unterstützt.

Aus diesen Gründen wird dringend empfohlen, Ihre App auf einem Entwicklungscomputer zu entwickeln und die App dann zum Remotedebuggen auf dem Gerät bereitzustellen. Für das lokale Entwickeln und Debuggen auf dem Gerät ist Folgendes erforderlich:

Im Rest dieses Artikels wird beschrieben, wie Sie .NET-Apps auf Single-Board-Computern remote über einen Entwicklungscomputer debuggen.

Wichtig

Zum Zeitpunkt der Erstellung dieses Dokuments war das Remotedebuggen von .NET 7-Apps in linux-arm-Umgebungen unzuverlässig und kann dazu führen, dass der Prozess vorzeitig beendet wird. Dieses Problem wird untersucht. .NET 6-Apps für linux-arm und .NET 7-Apps für linux-arm64 sind davon nicht betroffen.

Debuggen aus Visual Studio Code (plattformübergreifend)

Zum Debuggen von .NET auf Single-Board-Computern über Visual Studio Code müssen Konfigurationsschritte auf dem SBC und in der Projektdatei launch.json vorgenommen werden.

Aktivieren von SSH auf dem SBC

Für das Remotedebuggen wird SSH benötigt. Informationen zur Aktivierung von SSH auf Raspberry Pi finden Sie in der Raspberry Pi-Dokumentation unter Aktivieren von SSH. Stellen Sie sicher, dass Sie kennwortloses SSH konfiguriert haben.

Wichtig

In diesem Beispiel müssen Sie kennwortloses SSH auf Ihrem Gerät konfigurieren, da OpenSSH das Übergeben von Kennwörtern über die Befehlszeile nicht unterstützt. Wenn Sie ein Kennwort verwenden müssen, sollten Sie das Plink-Tool für ssh verwenden.

Installieren von Visual Studio Remote Debugger auf dem SBC

Führen Sie in einer Bash-Konsole auf dem SBC (entweder in einer lokalen Sitzung oder per SSH) den folgenden Befehl aus. Mit diesem Befehl wird der Visual Studio Remote Debugger heruntergeladen und auf dem Gerät installiert:

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

Einrichten von „launch.json“ in Visual Studio Code

Fügen Sie der Projektdatei launch.json auf dem Entwicklungscomputer eine Startkonfiguration hinzu. Gehen Sie wie folgt vor, falls die Datei launch.json im Projekt nicht vorhanden ist: Fügen Sie die Datei hinzu, indem Sie zur Registerkarte Ausführen wechseln, die Option launch.json-Datei erstellen auswählen und im Dialogfeld dann .NET oder .NET Core auswählen.

Die neue Konfiguration in launch.json sollte in etwa wie in den folgenden Beispielen aussehen:

"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"
        }
    },

Beachten Sie Folgendes:

  • program ist die ausführbare Datei, die von dotnet publish erstellt wurde.
  • cwd ist das Arbeitsverzeichnis, das beim Starten der App auf dem Gerät verwendet werden soll.
  • pipeProgram ist der Pfad zu einem SSH-Client auf dem lokalen Computer.
  • pipeArgs sind die Parameter, die an den SSH-Client übergeben werden sollen. Achten Sie darauf, dass Sie den Kennwortparameter und den Benutzer pi im Format <user>@<hostname> angeben.

Bereitstellen der App

Stellen Sie die App wie unter Bereitstellen von .NET-Apps auf ARM-Single-Board-Computern beschrieben bereit. Vergewissern Sie sich, dass der Bereitstellungspfad dem Pfad entspricht, der in der Konfiguration in launch.json unter dem Parameter cwd angegeben ist.

Starten Sie den Debugger.

Wählen Sie in Visual Studio Code auf der Registerkarte Ausführen und debuggen die Konfiguration aus, die Sie launch.json hinzugefügt haben, und wählen Sie Debuggen starten aus. Die App wird auf dem Gerät gestartet. Der Debugger kann verwendet werden, um Breakpoints festzulegen, lokale Variablen zu überprüfen und weitere Schritte auszuführen.

Debuggen aus Visual Studio unter Windows

Mit Visual Studio kann das Debuggen von .NET-Apps auf Remotegeräten per SSH durchgeführt werden. Auf dem Gerät ist keine besondere Konfiguration erforderlich. Ausführliche Informationen zur Verwendung von Visual Studio zum Remotedebuggen für .NET finden Sie unter Remotedebuggen für .NET unter Linux mit SSH.

Achten Sie darauf, den dotnet-Prozess auszuwählen, wenn Sie eine frameworkabhängige Bereitstellung debuggen. Andernfalls erhält der Prozess denselben Namen wie die ausführbare Datei der App.