Debuggen mit Visual Studio für Mac

Wichtig

Visual Studio für Mac wird am 31. August 2024 gemäß der Microsoft Modern Lifecycle-Richtlinie eingestellt. Sie können zwar weiterhin mit Visual Studio für Mac arbeiten, aber es gibt noch einige andere Optionen für Entwickler auf dem Mac, wie z. B. die Vorschauversion der neuen C# Dev Kit Erweiterung für VS Code.

Erfahren Sie mehr über die Fristen für den Support sowie über mögliche Alternativen.

Visual Studio für Mac verfügt über Debugger mit Unterstützung für .NET Core-, .NET Framework-, Unity- und Xamarin-Anwendungen.

Visual Studio für Mac verwendet den Soft-Debugger von Mono, der in die Mono-Laufzeit integriert wird und es Visual Studio für Mac ermöglicht, verwalteten Code für alle Plattformen zu debuggen.

Der Debugger

Visual Studio für Mac verwendet den Soft-Debugger von Mono, um verwalteten Code (C# oder F#) für alle Xamarin-Anwendungen zu debuggen. Der Soft-Debugger von Mono unterscheidet sich insofern von gewöhnlichen Debuggern, dass es sich um einen kooperativen und in die Mono-Laufzeit integrierten Debugger handelt. Der generierte Code und die Mono-Laufzeit kooperieren mit der IDE, um für ein benutzerfreundliches Debuggen zu sorgen. Die Mono-Laufzeit stellt die Debugfunktion über ein Versandprotokoll zur Verfügung. Weitere Informationen dazu finden Sie in der Mono-Dokumentation.

Hartdebugger, zum Beispiel LLDB oder GDB, steuern ein Programm ohne das Wissen oder die Kooperation des debuggten Programms. Diese können aber dennoch beim Debuggen von Xamarin-Anwendungen hilfreich sein, falls Sie nativen iOS- oder Android-Code debuggen müssen.

Für .NET Core und ASP.NET Core-Anwendungen verwendet Visual Studio für Mac den .NET Core-Debugger. Dieser Debugger ist ebenfalls ein kooperativer Debugger und arbeitet mit der .NET-Runtime.

Verwenden des Debuggers

Stellen Se sicher, dass die Konfiguration auf Debuggen festgelegt ist, um das Debuggen einer beliebigen Anwendung zu starten. Die Debugkonfiguration stellt eine Reihe hilfreicher Tools zur Unterstützung des Debuggens bereit, zum Beispiel Haltepunkte, das Verwenden von Daten-Schnellansichten und das Anzeigen der Aufrufliste:

Debug configuration

Festlegen eines Haltepunkts

Klicken Sie zum Festlegen eines Haltepunkts in Ihrer IDE im Randbereich Ihres Editors an der Stelle neben die Zeilennummer des Codes, an der Sie unterbrechen möchten:

Setting breakpoint in margin

Sie können alle in Ihrem Code festgelegten Breakpoints anzeigen, indem Sie zum Breakpoint-Fenster navigieren:

List of breakpoints

Debugging starten

Wählen Sie zum Starten des Debuggens den Zielbrowser, das Gerät bzw. den Simulator/Emulator aus:

Debug configurationSelect target device

Stellen Sie Ihre Anwendung dann bereit, indem Sie auf die Schaltfläche Wiedergabe klicken oder Befehlstaste+ Eingabetaste drücken. Wenn Sie einen Haltepunkt erreichen, wird der Code gelb hervorgehoben:

Highlight showing breakpoint has been hit

Debugtools wie zum Beispiel das, was zur Überprüfung der Werte eines Objekts verwendet wurde, können an dieser Stelle verwendet werden, um weitere Informationen zu den Vorgängen in Ihrem Code zu erhalten:

Debug visualizations

Bedingte Haltepunkte

Sie können auch Regeln festlegen, durch die die Umstände bestimmt werden, unter denen ein Breakpoint auftreten soll. Dies wird als das Hinzufügen eines bedingten Breakpoints bezeichnet. Greifen Sie auf das Fenster für Breakpoint-Eigenschaften zu, um einen bedingten Breakpoint festzulegen, was auf zweierlei Weisen getan werden kann:

  • Um einen neuen bedingten Haltepunkt hinzuzufügen, klicken Sie mit der rechten Maustaste links der Zeilennummer des Codes, an der Sie einen Haltepunkt setzen möchten, auf den Rand des Editors, und wählen Sie „Neuer Haltepunkt“:

Breakpoint context menu

  • Klicken Sie mit der rechten Maustaste auf den Breakpoint und wählen Sie Breakpoint-Eigenschaften aus oder wählen Sie im Breakpoint-Fenster die Taste Breakpoint bearbeiten wie unten dargestellt aus:

Edit existing Breakpoint in Breakpoints Window

Anschließend können Sie die Bedingung eingeben, unter der der Haltepunkt auftreten soll:

Edit Breakpoint conditions

Einzelschrittausführung von Code

Wenn ein Haltepunkt erreicht wird, gewähren Ihnen die Debugtools die Kontrolle über die Ausführung des Programms. Visual Studio für Mac zeigt vier Schaltflächen an, die es Ihnen ermöglichen, den Code auszuführen oder schrittweise zu durchzugehen. In Visual Studio für Mac sehen diese folgendermaßen aus:

Buttons to step through code

Hier sind die vier Schaltflächen:

  • Wiedergabe: Dadurch wird die Ausführung des Codes gestartet, bis der nächste Haltepunkt erreicht wird.
  • Prozedurschritt: Dadurch wird die nächste Codezeile ausgeführt. Wenn die nächste Zeile ein Funktionsaufruf ist, wird der Prozedurschritt die Funktion ausführen und in der nächsten Codezeile nach der Funktion anhalten.
  • Einzelschritt: Dadurch wird ebenfalls die nächste Codezeile ausgeführt. Wenn die nächste Zeile ein Funktionsaufruf ist, wird der Einzelschritt in der ersten Zeile der Funktion anhalten, wodurch Sie die Funktion dann Zeile für Zeile debuggen können. Wenn die nächste Zeile keine Funktion ist, funktioniert diese Schaltfläche genauso wie der Prozedurschritt.
  • Rücksprung: Dadurch wird zu der Zeile zurückgekehrt, in der die aktuelle Funktion aufgerufen wurde.

Ändern, welche Anweisung als nächstes ausgeführt wird

Während der Debugger angehalten wird, zeigt ein Pfeil im Rand an, welche Codezeile als nächstes ausgeführt wird. Sie können den Pfeil auswählen und ihn in eine andere Codezeile ziehen, um zu ändern, welche Anweisung ausgeführt wird. Sie können das gleiche Ergebnis erreichen, indem Sie mit der rechten Maustaste auf eine Codezeile klicken und im Kontextmenü die Option Nächste Anweisung festlegen auswählen.

Drag and drop arrow to set next statement

Achtung

Das Ändern der aktuellen Ausführungszeile kann in einer Anwendung zu unerwartetem Verhalten führen. Es gibt auch einige Situationen, in denen es nicht möglich ist, die nächste auszuführende Anweisung zu ändern. Wenn Sie z. B. den Pfeil von einer Methode auf eine andere Methode ziehen, funktioniert dies nicht. In diesen nicht unterstützten Fällen wird in Visual Studio für Mac ein Dialogfeld angezeigt, das Sie informiert, dass es nicht möglich war, die aktuelle Ausführungszeile zu ändern.

Debuggen der Mono-Klassenbibliotheken

Xamarin-Produkte enthalten den Quellcode für die Mono-Klassenbibliotheken, die Sie verwenden können, um in einem einzigen Schritt vom Debugger zu einer Überprüfung der Vorgänge im Hintergrund zu gelangen.

Da dieses Feature während des Debuggens mehr Arbeitsspeicher benötigt, ist es standardmäßig deaktiviert.

Navigieren Sie zu Visual Studio for Mac > Einstellungen > Debugger aus und versichern Sie sich, dass die Option „Externen Code schrittweise ausführenausgewählt ist, wie unten dargestellt:

Step into external code option

Siehe auch