Visual Studio Remote Debugging mit C++
In dieser kurzen Artikelreihe zeige ich euch wie unter Visual Studio Remote Debugging mit C++ funktioniert. Damit lassen sich recht einfach Programme auf externen Rechnern Debuggen und eventuell Fehler finden die man auf der lokalen Entwicklermaschine nicht reproduzieren kann.
Visual Studio Remote Debugging
Wer kennt nicht den berühmten Satz, den bestimmt schon jeder Software Entwickler einmal einem Vorgesetzten oder Kunden gegenüber ausgesprochen hat: „auf meinem Rechner läuft die Software ohne Probleme“. Böse Zungen behaupten ja damit wurde das Konzept der Docker Container geboren, da damit nicht nur das Programm, sondern die ganze Ausführungsumgebung deployed wird. Auf jeden Fall ist da schon etwas dran, denn manchmal läuft eine Software auf bestimmten Systemen nicht, oder nicht richtig. Man kann nun viel Zeit damit verbringen diese Umgebung nachzubauen oder: man startet den Remote Debugger. Mit den Visual Studio Remotetools hängt man sich vom lokal installierten Visual Studio direkt auf den „Problemrechner“ und kann dort debuggen. Meist sieht man sehr schnell, dass eine Variable einen unerwarteten Wert enthält oder sich Dateipfade oder Dateiinhalte falsch präsentieren.
Installation
Die Remotetools für die aktuelle Visual Studio Version findet man auf der offiziellen Projektseite bei Microsoft. Weiter unten gibt es einen eigenen Reiter für Tools, der Remote Debugger ist der erste Eintrag. Vor dem Download wählt man die bevorzugte Sprache und ganz wichtig: die korrekte Architektur des Systems.
Die Installation ist selbsterklärend. Beim ersten Start wird man als Benutzer mit folgendem Dialog konfrontiert:
Wenn man in ein System hinein debuggen will benötigt man von außen Zugriff. Deshalb ist es notwendig die Firewall dahingehend zu ändern. Mit einem Klick auf „Configure remote debugging“ passiert dies mit Administratorenrechte völlig automatisch. Als Benutzer muss man sich im Klaren sein, dass ein für das Remote Debugging offenes System auch eine sicherheitsrelevante Lücke hat. Sobald man mit dem Debugging fertig ist empfehle ich dringend diese Anpassung wieder rückgängig zu machen!
Der Remote Debugger ist nur ein kleiner Dialog auf dem Benachrichtigungen angezeigt werden. Den Dialog lassen wir nun offen, wir kümmern uns nun um die Entwicklermaschine die darauf zugreifen will.
Remotedebugging mit C++
In den folgenden Absätzen beschreibe ich die Einrichtung für das Remote Debugging in Visual Studio 2019 auf dem Rechner vom Programmierer. Auf dem Zielsystem läuft aktuell wie oben beschrieben das Remotetool vom Visual Studio. Alle nötigen Ports sind offen und werden durch keine Firewall blockiert.
Bei den Projekteinstellungen meines C++ Projekts wechsle ich auf die Konfiguration vom Debugger. Unter Debugging wählt man den zu startenden Debugger. In dem Steuerelement wechselt man vom lokalen zum Remote-Windows-Debugger. Siehe dazu folgendes Bild:
Beim Remoteservername gibt man nun die Verbindungsdaten vom Zielrechner ein. Die Informationen über Rechnername und Port findet man im Dialog der Remotetools:
Damit das Debugging nun funktioniert müssen noch die Ordner zum Arbeitsverzeichnis und Details zum auszuführenden Programm angegeben werden. Bei mir liegt der Projektordner am Entwicklungsrechner und am Zielsystem jeweils im selben Ordner.
Fazit
Unter Visual Studio funktioniert das Remote Debugging recht einfach. Mit den Remotetools muss man jedoch auf dem Zielsystem eine Software installieren und Firewall-Einstellungen verändern. Ich habe gezeigt wie das funktioniert. Sofern das Remote System kein Testsystem ist sondern ein Produktivsystem oder ein Rechner eines Kunden, dann sollte man dingend nach der Arbeit die Firewall wieder umkonfigurieren und die Remote Debugging Ports schließen.