Visual Studio Remote Debugging mit C#
In diesem Tutorial zeige ich wie man mit Visual Studio Remote Debugging mit C# durchführt. Zuletzt habe ich bereits gezeigt wie Remote Debugging mit C++ funktioniert. Bei modernen C# .NET Anwendungen ist das ungleich einfacher.
Visual Studio Remote Debugging mit C#
Normalerweise benötigt man Remote Debugging erst, wenn bereits ein größeres C# Projekt sich im Einsatz befindet oder auf einem Entwicklungssystem ungeahnte Probleme bereitet. Der Einfachheit halber erstelle ich aber ein neues .NET Core Hello World Projekt beziehungsweise lasse dieses mit den Standardeinstellungen von Visual Studio 2019 erstellen:
Kompiliert und führt man das Projekt nun lokal aus, dann erscheint eine Ausgabe „Hello World“ im Konsolenfenster. Soweit ist das verständlich. Ich gehe nun davon aus, das Programm wird auf einem Rechner ausgeführt und macht Probleme. Ich möchte nun von meinem Entwicklungssystem auf dem Visual Studio installiert ist in das Programm debuggen. Ausgeführt muss es dabei natürlich auf der problematischen Umgebung werden. Dazu lade ich die Remotetools für Visual Studio auf dem Zielsystem herunter und starte dort den Remote Debugger. Details dazu findet man im verlinkten Artikel zur Beschreibung für das C++ Debugging.
Debugger konfigurieren
Auf dem Rechner vom Entwickler wählt man nun bei den Projekteigenschaften den Reiter Debuggen aus und sucht dort nach dem Remote Debugger. Wie im Bild ersichtlich startet man über die Schaltfläche „Suchen“ einen Dialog der alle wartenden Maschinen mit einem Remote Debugger finden. Sofern der Gesuchte Rechner nicht angezeigt wird kann man die Verbindung auch manuell eingeben.
Der Workflow für das Debuggen ist identisch mit jenem für das lokale debuggen. Der Debugger startet das Programm extern und hält es an den Haltepunkten (Breakpoints) an. Die Information über den Status des Prozesses wie beispielsweise die Variablen im Speicher sind wie gewohnt abrufbar. Nun kann man endlich den nervigen Laufzeitfehler auf der Zielumgebung finden und lösen.
Probleme
Ich habe festgestellt, das der Debugger dann fehlerfrei startet, wenn am Zielsystem in der selben Ordnerstruktur der komplette Quellcode liegt. Das klappt sehr gut für Laborbedingungen in der Praxis will man diese Daten vermutlich nicht teilen. In diesem Fall ist das Setup einer solchen Debug Session deutlich komplexer und je nach zu debuggenden Programm unterschiedlich.
Fazit
Der Remote Debugger von Visual Studio ist super hilfreich, wenn man am Zielsystem mit Laufzeitfehlern konfrontiert wird die man lokal nicht nachstellen kann. Die Remote Tools sind schnell installiert und liefern hilfreiche Daten zur Lösungsfindung.