Debuggen von .NET-Apps auf ARM-Single-Board-Computern
Artikel
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:
Ein 64-Bit-Betriebssystem mit einer Desktopumgebung, z. B. Raspberry Pi OS (64-Bit)
Verwenden Sie für die Installation das Skript dotnet-installwie in einer frameworkabhängigen Bereitstellung. Fügen Sie unbedingt die Umgebungsvariable DOTNET_ROOT hinzu, und fügen Sie $PATH das Verzeichnis .dotnet hinzu.
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.
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:
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:
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.
program ist der Pfad zur .NET-Runtime auf dem Gerät.
args ist der Pfad zur Assembly, die auf dem Gerät debuggt werden soll.
cwd ist das Arbeitsverzeichnis, das beim Starten der App auf dem Gerät verwendet werden soll.
justMyCode ist auf false festgelegt, um sicherzustellen, dass der Debugger an Haltepunkten im App-Code unterbrochen wird.
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.
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Praxisorientiertes Training zur Bereitstellung und zum Remote-Debuggen Ihrer ASP.NET Core-Anwendungen mithilfe von Visual Studio 2022 auf Azure App Service.
Erstellen von End-to-End-Lösungen in Microsoft Azure zum Erstellen von Azure Functions-Lösungen, Implementieren und Verwalten von Web-Apps, Entwickeln von Lösungen mit Azure Storage u. v. m.