Tutorial: Debuggen einer .NET-Konsolenanwendung mit Visual Studio
In diesem Tutorial werden die Debugtools vorgestellt, die in Visual Studio verfügbar sind.
Wichtig
Alle Tastenkombinationen basieren auf den Standardwerten von Visual Studio. Ihre Tastenkombinationen können variieren. Weitere Informationen finden Sie unter Tastenkombinationen in Visual Studio.
Voraussetzungen
- Dieses Tutorial kann mit der Konsolen-App durchgeführt werden, die Sie in Tutorial: Erstellen einer .NET Core-Konsolenanwendung mit Visual Studio erstellen.
Verwenden der Debugbuildkonfiguration
Debug und Release sind zwei Standardbuildkonfigurationen von Visual Studio. Sie verwenden die Debugbuildkonfiguration zum Debuggen und die Releasekonfiguration für die endgültige Releaseverteilung.
In der Debugkonfiguration wird ein Programm mit vollständigen symbolischen Debuginformationen und ohne Optimierung kompiliert. Die Optimierung gestaltet das Debuggen etwas schwieriger, da die Beziehung zwischen Quellcode und generierten Anweisungen komplexer ist. Die Releasekonfiguration eines Programms verfügt über keine symbolischen Debuginformationen und wird vollständig optimiert.
Standardmäßig verwendet Visual Studio die Debugbuildkonfiguration, sodass Sie diese Einstellung vor dem Debuggen nicht ändern müssen.
Starten Sie Visual Studio.
Öffnen Sie das Projekt, das Sie in Tutorial: Erstellen einer .NET Core-Konsolenanwendung mit Visual Studio erstellt haben.
Die aktuelle Buildkonfiguration wird auf der Symbolleiste angezeigt. Das folgende Symbolleistenbild zeigt, dass Visual Studio konfiguriert wurde, um die Debugversion Ihrer Anwendung zu kompilieren:
Haltepunkt festlegen
Ein Haltepunkt unterbricht vorübergehend die Ausführung der Anwendung, bevor die Zeile mit dem Haltepunkt ausgeführt wird.
Legen Sie einen Haltepunkt in der Zeile fest, in der der Name, das Datum und die Uhrzeit angezeigt werden, indem Sie in der betreffenden Zeile auf den linken Rand des Codefensters klicken. Der linke Rand befindet sich links von den Zeilennummern. Sie können einen Breakpoint auch festlegen, indem Sie den Cursor in der Codezeile platzieren und dann F9 drücken oder Debuggen>Haltepunkt umschalten in der Menüleiste auswählen.
Wie in der folgenden Abbildung gezeigt, hebt Visual Studio die Zeile hervor, in der der Breakpoint festgelegt ist, und zeigt am linken Rand einen roten Punkt an.
Drücken Sie F5, um das Programm im Debugmodus auszuführen. Eine andere Möglichkeit, das Debuggen zu starten, besteht darin, im Menü Debuggen>Debuggen starten zu wählen.
Geben Sie eine Zeichenfolge im Konsolenfenster ein, wenn das Programm Sie zur Eingabe eines Namens auffordert, und drücken Sie dann die EINGABETASTE.
Die Ausführung des Programms endet, wenn sie den Haltepunkt erreicht, und bevor die
Console.WriteLine
-Methode ausgeführt wird. Im Fenster Lokal werden die Werte von Variablen angezeigt, die in der gerade ausgeführten Methode definiert sind.
Verwenden des Fensters „Direkt“
Das Direktfenster dient Ihrer Interaktion mit der Anwendung, die Sie debuggen. Sie können den Wert von Variablen interaktiv ändern, um zu sehen, wie sich dies auf Ihr Programm auswirkt.
Wenn das Direktfenster nicht angezeigt wird, zeigen Sie es durch Auswählen von Debuggen>Fenster>Direkt an.
Geben Sie
name = "Gracie"
im Direktfenster ein, und drücken Sie die EINGABETASTE.Geben Sie
currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime()
im Direktfenster ein, und drücken Sie die EINGABETASTE.Im Direktfenster werden der Wert der Zeichenfolgenvariablen und die Eigenschaften des DateTime-Werts angezeigt. Darüber hinaus werden die Werte der Variablen im Fenster Lokal aktualisiert.
Drücken Sie F5, um die Ausführung des Programms fortzusetzen. Eine weitere Möglichkeit zum Fortsetzen besteht darin, im Menü Debuggen>Fortsetzen zu wählen.
Die im Konsolenfenster angezeigten Werte entsprechen auch den Änderungen im Direktfenster.
Drücken Sie eine beliebige Taste, um die Anwendung und das Debuggen zu beenden.
Festlegen eines bedingten Breakpoints
Das Programm zeigt die Zeichenfolge an, die der Benutzer eingibt. Aber was geschieht, wenn der Benutzer gar nichts eingibt? Sie können dies mit einem nützlichen Debugfeature testen, das als Bedingter Breakpoint bezeichnet wird.
Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt. Wählen Sie im Kontextmenü Bedingungen zum Öffnen des Dialogfelds Breakpointeinstellungen aus. Aktivieren Sie das Kontrollkästchen für Bedingungen, wenn es nicht bereits aktiviert ist.
Geben Sie als Bedingten Ausdruck den folgenden Code in das Feld ein, der Beispielcode zeigt, der testet, ob
x
den Wert 5 aufweist.string.IsNullOrEmpty(name)
String.IsNullOrEmpty(name)
Jedes Mal, wenn der Breakpoint erreicht wird, ruft der Debugger die
String.IsNullOrEmpty(name)
-Methode auf, und die Ausführung wird nur in dieser Zeile unterbrochen, wenn der Methodenaufruftrue
zurückgibt.Anstelle eines bedingten Ausdrucks können Sie eine Trefferanzahl angeben, wodurch die Ausführung des Programms unterbrochen wird, bevor eine Anweisung mit der angegebenen Häufigkeit ausgeführt wird. Eine weitere Option ist das Angeben einer Filterbedingung, wodurch die Ausführung des Programms auf Basis von Attributen wie Threadbezeichner, Prozessname oder Threadname unterbrochen wird.
Klicken Sie auf Schließen, um das Dialogfeld zu schließen.
Starten Sie das Programm im Debugmodus, indem Sie F5drücken.
Drücken Sie im Konsolenfenster die EINGABETASTE, wenn Sie zur Eingabe Ihres Namens aufgefordert werden.
Da die angegebene Bedingung erfüllt wurde (
name
ist entwedernull
oder String.Empty), endet die Ausführung des Programms, wenn sie den Breakpoint erreicht, und bevor dieConsole.WriteLine
-Methode ausgeführt wird.Wählen Sie das Fenster Lokal aus, das die Werte der lokalen Variablen der aktuell ausgeführten Methode anzeigt. In diesem Fall ist
Main
die derzeit ausgeführte Methode. Stellen Sie sicher, dass der Wert der Variablenname
""
bzw. String.Empty ist.Bestätigen Sie, dass der Wert eine leere Zeichenfolge ist, indem Sie die folgende Anweisung im Direktfenster eingeben und dann die EINGABETASTE drücken. Das Ergebnis ist
true
.? name == String.Empty
? String.IsNullOrEmpty(name)
Das Fragezeichen weist das Direktfenster an, einen Ausdruck auszuwerten.
Drücken Sie F5, um die Ausführung des Programms fortzusetzen.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.
Löschen Sie den Breakpoint durch Klicken auf den Punkt am linken Rand des Codefensters. Andere Möglichkeiten zum Löschen eines Haltepunkts bestehen darin, F9 zu drücken oder Debuggen > Haltepunkt umschalten auszuwählen, während die Codezeile markiert ist.
Schrittweises Ausführen eines Programms
Mit Visual Studio können Sie ein Programm auch zeilenweise durchlaufen und die Ausführung jeder einzelnen Zeile überwachen. Normalerweise würden Sie einen Breakpoint festlegen und den Programmablauf in einem kleinen Teil des Programmcodes verfolgen. Da dieses Programm klein ist, können Sie das gesamte Programm schrittweise durchlaufen.
Wählen Sie Debuggen>Einzelschritt aus. Eine andere Möglichkeit zum Debuggen jeweils einer Anweisung besteht darin, F11 zu drücken.
Visual Studio markiert einen Pfeil neben der nächsten Zeile der Ausführung und zeigt diesen an.
C#
Visual Basic
An diesem Punkt wird im Fenster Lokal angezeigt, dass das
args
-Array leer ist undname
undcurrentDate
Standardwerte aufweisen. Darüber hinaus hat Visual Studio ein leeres Konsolenfenster geöffnet.Drücken Sie die Taste F11. Visual Studio hebt nun die nächste auszuführende Zeile hervor. Das Fenster Lokal ist unverändert, und das Konsolenfenster bleibt leer.
C#
Visual Basic
Drücken Sie die Taste F11. Visual Studio hebt die Anweisung hervor, die die Zuweisung der Variablen
name
enthält. Das Fenster Lokal zeigt, dassname
den Wertnull
aufweist, und das Konsolenfenster zeigt die Zeichenfolge „What is your name?“ an.Reagieren Sie auf die Eingabeaufforderung, indem Sie eine Zeichenfolge in das Konsolenfenster eingeben und die EINGABETASTE drücken. Die Konsole reagiert nicht, und die eingegebene Zeichenfolge wird nicht im Konsolenfenster angezeigt, aber die Console.ReadLine-Methode wird dennoch Ihre Eingabe erfassen.
Drücken Sie die Taste F11. Visual Studio hebt die Anweisung hervor, die die Zuweisung der Variablen
currentDate
enthält. Das Fenster Lokale Variablen zeigt den vom Aufruf der Methode Console.ReadLine zurückgegebenen Wert an. Im Konsolenfenster wird auch die Zeichenfolge angezeigt, die Sie an der Eingabeaufforderung eingegeben haben.Drücken Sie die Taste F11. Das Fenster Lokal zeigt den Wert der Variablen
currentDate
nach der Zuweisung aus der DateTime.Now-Eigenschaft an. Das Konsolenfenster ist unverändert.Drücken Sie die Taste F11. Visual Studio ruft die Console.WriteLine(String, Object, Object)-Methode auf. Das Konsolenfenster zeigt die formatierte Zeichenfolge an.
Wählen Sie Debuggen>Ausführen bis Rücksprung aus. Eine weitere Möglichkeit, die schrittweise Ausführung zu beenden, besteht darin, UMSCHALT+F11 zu drücken.
Das Konsolenfenster zeigt eine Meldung an und wartet, bis Sie eine Taste drücken.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.
Verwenden der Releasebuildkonfiguration
Nachdem Sie die Debugversion der Anwendung getestet haben, sollten Sie auch die Releaseversion kompilieren und testen. Die endgültige Releaseversion umfasst Compileroptimierungen, die manchmal das Verhalten einer Anwendung negativ beeinträchtigen können. Compileroptimierungen, die zur Verbesserung der Leistung entwickelt wurden, können z. B. Racebedingungen in Multithreadanwendungen erstellen.
Ändern Sie zum Erstellen und Testen der endgültigen Produktversion der Konsolenanwendung die Buildkonfiguration auf der Symbolleiste von Debuggen in Freigabe.
Wenn Sie F5 drücken oder Projektmappe erstellen im Menü Build auswählen, kompiliert Visual Studio die Releaseversion der Anwendung. Sie können sie dann wie die Debugversion testen.
Nächste Schritte
In diesem Tutorial haben Sie Debugtools von Visual Studio verwendet. Im nächsten Tutorial veröffentlichen Sie eine bereitstellbare Version der App.
In diesem Tutorial werden die Debugtools vorgestellt, die in Visual Studio verfügbar sind.
Wichtig
Alle Tastenkombinationen basieren auf den Standardwerten von Visual Studio. Ihre Tastenkombinationen können variieren. Weitere Informationen finden Sie unter Tastenkombinationen in Visual Studio.
Voraussetzungen
- Dieses Tutorial kann mit der Konsolen-App durchgeführt werden, die Sie in Tutorial: Erstellen einer .NET Core-Konsolenanwendung mit Visual Studio erstellen.
Verwenden der Debugbuildkonfiguration
Debug und Release sind zwei Standardbuildkonfigurationen von Visual Studio. Sie verwenden die Debugbuildkonfiguration zum Debuggen und die Releasekonfiguration für die endgültige Releaseverteilung.
In der Debugkonfiguration wird ein Programm mit vollständigen symbolischen Debuginformationen und ohne Optimierung kompiliert. Die Optimierung gestaltet das Debuggen etwas schwieriger, da die Beziehung zwischen Quellcode und generierten Anweisungen komplexer ist. Die Releasekonfiguration eines Programms verfügt über keine symbolischen Debuginformationen und wird vollständig optimiert.
Standardmäßig verwendet Visual Studio die Debugbuildkonfiguration, sodass Sie diese Einstellung vor dem Debuggen nicht ändern müssen.
Starten Sie Visual Studio.
Öffnen Sie das Projekt, das Sie in Tutorial: Erstellen einer .NET Core-Konsolenanwendung mit Visual Studio erstellt haben.
Die aktuelle Buildkonfiguration wird auf der Symbolleiste angezeigt. Das folgende Symbolleistenbild zeigt, dass Visual Studio konfiguriert wurde, um die Debugversion Ihrer Anwendung zu kompilieren:
Haltepunkt festlegen
Ein Haltepunkt unterbricht vorübergehend die Ausführung der Anwendung, bevor die Zeile mit dem Haltepunkt ausgeführt wird.
Legen Sie einen Haltepunkt in der Zeile fest, in der der Name, das Datum und die Uhrzeit angezeigt werden, indem Sie in der betreffenden Zeile auf den linken Rand des Codefensters klicken. Der linke Rand befindet sich links von den Zeilennummern. Sie können einen Breakpoint auch festlegen, indem Sie den Cursor in der Codezeile platzieren und dann F9 drücken oder Debuggen>Haltepunkt umschalten in der Menüleiste auswählen.
Wie in der folgenden Abbildung gezeigt, hebt Visual Studio die Zeile hervor, in der der Breakpoint festgelegt ist, und zeigt am linken Rand einen roten Punkt an.
Drücken Sie F5, um das Programm im Debugmodus auszuführen. Eine andere Möglichkeit, das Debuggen zu starten, besteht darin, im Menü Debuggen>Debuggen starten zu wählen.
Geben Sie eine Zeichenfolge im Konsolenfenster ein, wenn das Programm Sie zur Eingabe eines Namens auffordert, und drücken Sie dann die EINGABETASTE.
Die Ausführung des Programms endet, wenn sie den Haltepunkt erreicht, und bevor die
Console.WriteLine
-Methode ausgeführt wird. Im Fenster Lokal werden die Werte von Variablen angezeigt, die in der gerade ausgeführten Methode definiert sind.
Verwenden des Fensters „Direkt“
Das Direktfenster dient Ihrer Interaktion mit der Anwendung, die Sie debuggen. Sie können den Wert von Variablen interaktiv ändern, um zu sehen, wie sich dies auf Ihr Programm auswirkt.
Wenn das Direktfenster nicht angezeigt wird, zeigen Sie es durch Auswählen von Debuggen>Fenster>Direkt an.
Geben Sie
name = "Gracie"
im Direktfenster ein, und drücken Sie die EINGABETASTE.Geben Sie
currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime()
im Direktfenster ein, und drücken Sie die EINGABETASTE.Im Direktfenster werden der Wert der Zeichenfolgenvariablen und die Eigenschaften des DateTime-Werts angezeigt. Darüber hinaus werden die Werte der Variablen im Fenster Lokal aktualisiert.
Drücken Sie F5, um die Ausführung des Programms fortzusetzen. Eine weitere Möglichkeit zum Fortsetzen besteht darin, im Menü Debuggen>Fortsetzen zu wählen.
Die im Konsolenfenster angezeigten Werte entsprechen auch den Änderungen im Direktfenster.
Drücken Sie eine beliebige Taste, um die Anwendung und das Debuggen zu beenden.
Festlegen eines bedingten Breakpoints
Das Programm zeigt die Zeichenfolge an, die der Benutzer eingibt. Aber was geschieht, wenn der Benutzer gar nichts eingibt? Sie können dies mit einem nützlichen Debugfeature testen, das als Bedingter Breakpoint bezeichnet wird.
Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt. Wählen Sie im Kontextmenü Bedingungen zum Öffnen des Dialogfelds Breakpointeinstellungen aus. Aktivieren Sie das Kontrollkästchen für Bedingungen, wenn es nicht bereits aktiviert ist.
Geben Sie als Bedingten Ausdruck den folgenden Code in das Feld ein, der Beispielcode zeigt, der testet, ob
x
den Wert 5 aufweist.string.IsNullOrEmpty(name)
String.IsNullOrEmpty(name)
Jedes Mal, wenn der Breakpoint erreicht wird, ruft der Debugger die
String.IsNullOrEmpty(name)
-Methode auf, und die Ausführung wird nur in dieser Zeile unterbrochen, wenn der Methodenaufruftrue
zurückgibt.Anstelle eines bedingten Ausdrucks können Sie eine Trefferanzahl angeben, wodurch die Ausführung des Programms unterbrochen wird, bevor eine Anweisung mit der angegebenen Häufigkeit ausgeführt wird. Eine weitere Option ist das Angeben einer Filterbedingung, wodurch die Ausführung des Programms auf Basis von Attributen wie Threadbezeichner, Prozessname oder Threadname unterbrochen wird.
Klicken Sie auf Schließen, um das Dialogfeld zu schließen.
Starten Sie das Programm im Debugmodus, indem Sie F5drücken.
Drücken Sie im Konsolenfenster die EINGABETASTE, wenn Sie zur Eingabe Ihres Namens aufgefordert werden.
Da die angegebene Bedingung erfüllt wurde (
name
ist entwedernull
oder String.Empty), endet die Ausführung des Programms, wenn sie den Breakpoint erreicht, und bevor dieConsole.WriteLine
-Methode ausgeführt wird.Wählen Sie das Fenster Lokal aus, das die Werte der lokalen Variablen der aktuell ausgeführten Methode anzeigt. In diesem Fall ist
Main
die derzeit ausgeführte Methode. Stellen Sie sicher, dass der Wert der Variablenname
""
bzw. String.Empty ist.Bestätigen Sie, dass der Wert eine leere Zeichenfolge ist, indem Sie die folgende Anweisung im Direktfenster eingeben und dann die EINGABETASTE drücken. Das Ergebnis ist
true
.? name == String.Empty
? String.IsNullOrEmpty(name)
Das Fragezeichen weist das Direktfenster an, einen Ausdruck auszuwerten.
Drücken Sie F5, um die Ausführung des Programms fortzusetzen.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.
Löschen Sie den Breakpoint durch Klicken auf den Punkt am linken Rand des Codefensters. Andere Möglichkeiten zum Löschen eines Haltepunkts bestehen darin, F9 zu drücken oder Debuggen > Haltepunkt umschalten auszuwählen, während die Codezeile markiert ist.
Schrittweises Ausführen eines Programms
Mit Visual Studio können Sie ein Programm auch zeilenweise durchlaufen und die Ausführung jeder einzelnen Zeile überwachen. Normalerweise würden Sie einen Breakpoint festlegen und den Programmablauf in einem kleinen Teil des Programmcodes verfolgen. Da dieses Programm klein ist, können Sie das gesamte Programm schrittweise durchlaufen.
Wählen Sie Debuggen>Einzelschritt aus. Eine andere Möglichkeit zum Debuggen jeweils einer Anweisung besteht darin, F11 zu drücken.
Visual Studio markiert einen Pfeil neben der nächsten Zeile der Ausführung und zeigt diesen an.
C#
Visual Basic
An diesem Punkt wird im Fenster Lokal angezeigt, dass das
args
-Array leer ist undname
undcurrentDate
Standardwerte aufweisen. Darüber hinaus hat Visual Studio ein leeres Konsolenfenster geöffnet.Drücken Sie die Taste F11. Visual Studio hebt nun die nächste auszuführende Zeile hervor. Das Fenster Lokal ist unverändert, und das Konsolenfenster bleibt leer.
C#
Visual Basic
Drücken Sie die Taste F11. Visual Studio hebt die Anweisung hervor, die die Zuweisung der Variablen
name
enthält. Das Fenster Lokal zeigt, dassname
den Wertnull
aufweist, und das Konsolenfenster zeigt die Zeichenfolge „What is your name?“ an.Reagieren Sie auf die Eingabeaufforderung, indem Sie eine Zeichenfolge in das Konsolenfenster eingeben und die EINGABETASTE drücken. Die Konsole reagiert nicht, und die eingegebene Zeichenfolge wird nicht im Konsolenfenster angezeigt, aber die Console.ReadLine-Methode wird dennoch Ihre Eingabe erfassen.
Drücken Sie die Taste F11. Visual Studio hebt die Anweisung hervor, die die Zuweisung der Variablen
currentDate
enthält. Das Fenster Lokale Variablen zeigt den vom Aufruf der Methode Console.ReadLine zurückgegebenen Wert an. Im Konsolenfenster wird auch die Zeichenfolge angezeigt, die Sie an der Eingabeaufforderung eingegeben haben.Drücken Sie die Taste F11. Das Fenster Lokal zeigt den Wert der Variablen
currentDate
nach der Zuweisung aus der DateTime.Now-Eigenschaft an. Das Konsolenfenster ist unverändert.Drücken Sie die Taste F11. Visual Studio ruft die Console.WriteLine(String, Object, Object)-Methode auf. Das Konsolenfenster zeigt die formatierte Zeichenfolge an.
Wählen Sie Debuggen>Ausführen bis Rücksprung aus. Eine weitere Möglichkeit, die schrittweise Ausführung zu beenden, besteht darin, UMSCHALT+F11 zu drücken.
Das Konsolenfenster zeigt eine Meldung an und wartet, bis Sie eine Taste drücken.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.
Verwenden der Releasebuildkonfiguration
Nachdem Sie die Debugversion der Anwendung getestet haben, sollten Sie auch die Releaseversion kompilieren und testen. Die endgültige Releaseversion umfasst Compileroptimierungen, die manchmal das Verhalten einer Anwendung negativ beeinträchtigen können. Compileroptimierungen, die zur Verbesserung der Leistung entwickelt wurden, können z. B. Racebedingungen in Multithreadanwendungen erstellen.
Ändern Sie zum Erstellen und Testen der endgültigen Produktversion der Konsolenanwendung die Buildkonfiguration auf der Symbolleiste von Debuggen in Freigabe.
Wenn Sie F5 drücken oder Projektmappe erstellen im Menü Build auswählen, kompiliert Visual Studio die Releaseversion der Anwendung. Sie können sie dann wie die Debugversion testen.
Nächste Schritte
In diesem Tutorial haben Sie Debugtools von Visual Studio verwendet. Im nächsten Tutorial veröffentlichen Sie eine bereitstellbare Version der App.
In diesem Tutorial werden die Debugtools vorgestellt, die in Visual Studio verfügbar sind.
Voraussetzungen
- Dieses Tutorial kann mit der Konsolen-App durchgeführt werden, die Sie in Tutorial: Erstellen einer .NET Core-Konsolenanwendung mit Visual Studio erstellen.
Verwenden der Debugbuildkonfiguration
Debug und Release sind zwei Standardbuildkonfigurationen von Visual Studio. Sie verwenden die Debugbuildkonfiguration zum Debuggen und die Releasekonfiguration für die endgültige Releaseverteilung.
In der Debugkonfiguration wird ein Programm mit vollständigen symbolischen Debuginformationen und ohne Optimierung kompiliert. Die Optimierung gestaltet das Debuggen etwas schwieriger, da die Beziehung zwischen Quellcode und generierten Anweisungen komplexer ist. Die Releasekonfiguration eines Programms verfügt über keine symbolischen Debuginformationen und wird vollständig optimiert.
Standardmäßig verwendet Visual Studio die Debugbuildkonfiguration, sodass Sie diese Einstellung vor dem Debuggen nicht ändern müssen.
Starten Sie Visual Studio.
Öffnen Sie das Projekt, das Sie in Tutorial: Erstellen einer .NET Core-Konsolenanwendung mit Visual Studio erstellt haben.
Die aktuelle Buildkonfiguration wird auf der Symbolleiste angezeigt. Das folgende Symbolleistenbild zeigt, dass Visual Studio konfiguriert wurde, um die Debugversion Ihrer Anwendung zu kompilieren:
Haltepunkt festlegen
Ein Haltepunkt unterbricht vorübergehend die Ausführung der Anwendung, bevor die Zeile mit dem Haltepunkt ausgeführt wird.
Legen Sie einen Haltepunkt in der Zeile fest, in der der Name, das Datum und die Uhrzeit angezeigt werden, indem Sie in der betreffenden Zeile auf den linken Rand des Codefensters klicken. Der linke Rand befindet sich links von den Zeilennummern. Sie können einen Breakpoint auch festlegen, indem Sie den Cursor in der Codezeile platzieren und dann F9 drücken oder Debuggen>Haltepunkt umschalten in der Menüleiste auswählen.
Wie in der folgenden Abbildung gezeigt, hebt Visual Studio die Zeile hervor, in der der Breakpoint festgelegt ist, und zeigt am linken Rand einen roten Punkt an.
Drücken Sie F5, um das Programm im Debugmodus auszuführen. Eine andere Möglichkeit, das Debuggen zu starten, besteht darin, im Menü Debuggen>Debuggen starten zu wählen.
Geben Sie eine Zeichenfolge im Konsolenfenster ein, wenn das Programm Sie zur Eingabe eines Namens auffordert, und drücken Sie dann die EINGABETASTE.
Die Ausführung des Programms endet, wenn sie den Haltepunkt erreicht, und bevor die
Console.WriteLine
-Methode ausgeführt wird. Im Fenster Lokal werden die Werte von Variablen angezeigt, die in der gerade ausgeführten Methode definiert sind.
Verwenden des Fensters „Direkt“
Das Direktfenster dient Ihrer Interaktion mit der Anwendung, die Sie debuggen. Sie können den Wert von Variablen interaktiv ändern, um zu sehen, wie sich dies auf Ihr Programm auswirkt.
Wenn das Direktfenster nicht angezeigt wird, zeigen Sie es durch Auswählen von Debuggen>Fenster>Direkt an.
Geben Sie
name = "Gracie"
im Direktfenster ein, und drücken Sie die EINGABETASTE.Geben Sie
currentDate = DateTime.Parse("2019-11-16T17:25:00Z").ToUniversalTime()
im Direktfenster ein, und drücken Sie die EINGABETASTE.Im Direktfenster werden der Wert der Zeichenfolgenvariablen und die Eigenschaften des DateTime-Werts angezeigt. Darüber hinaus werden die Werte der Variablen im Fenster Lokal aktualisiert.
Drücken Sie F5, um die Ausführung des Programms fortzusetzen. Eine weitere Möglichkeit zum Fortsetzen besteht darin, im Menü Debuggen>Fortsetzen zu wählen.
Die im Konsolenfenster angezeigten Werte entsprechen auch den Änderungen im Direktfenster.
Drücken Sie eine beliebige Taste, um die Anwendung und das Debuggen zu beenden.
Festlegen eines bedingten Breakpoints
Das Programm zeigt die Zeichenfolge an, die der Benutzer eingibt. Aber was geschieht, wenn der Benutzer gar nichts eingibt? Sie können dies mit einem nützlichen Debugfeature testen, das als Bedingter Breakpoint bezeichnet wird.
Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt. Wählen Sie im Kontextmenü Bedingungen zum Öffnen des Dialogfelds Breakpointeinstellungen aus. Aktivieren Sie das Kontrollkästchen für Bedingungen, wenn es nicht bereits aktiviert ist.
Geben Sie als Bedingten Ausdruck den folgenden Code in das Feld ein, der Beispielcode zeigt, der testet, ob
x
den Wert 5 aufweist.String.IsNullOrEmpty(name)
String.IsNullOrEmpty(name)
Jedes Mal, wenn der Breakpoint erreicht wird, ruft der Debugger die
String.IsNullOrEmpty(name)
-Methode auf, und die Ausführung wird nur in dieser Zeile unterbrochen, wenn der Methodenaufruftrue
zurückgibt.Anstelle eines bedingten Ausdrucks können Sie eine Trefferanzahl angeben, wodurch die Ausführung des Programms unterbrochen wird, bevor eine Anweisung mit der angegebenen Häufigkeit ausgeführt wird. Eine weitere Option ist das Angeben einer Filterbedingung, wodurch die Ausführung des Programms auf Basis von Attributen wie Threadbezeichner, Prozessname oder Threadname unterbrochen wird.
Klicken Sie auf Schließen, um das Dialogfeld zu schließen.
Starten Sie das Programm im Debugmodus, indem Sie F5drücken.
Drücken Sie im Konsolenfenster die EINGABETASTE, wenn Sie zur Eingabe Ihres Namens aufgefordert werden.
Da die angegebene Bedingung erfüllt wurde (
name
ist entwedernull
oder String.Empty), endet die Ausführung des Programms, wenn sie den Breakpoint erreicht, und bevor dieConsole.WriteLine
-Methode ausgeführt wird.Wählen Sie das Fenster Lokal aus, das die Werte der lokalen Variablen der aktuell ausgeführten Methode anzeigt. In diesem Fall ist
Main
die derzeit ausgeführte Methode. Stellen Sie sicher, dass der Wert der Variablenname
""
bzw. String.Empty ist.Bestätigen Sie, dass der Wert eine leere Zeichenfolge ist, indem Sie die folgende Anweisung im Direktfenster eingeben und dann die EINGABETASTE drücken. Das Ergebnis ist
true
.? name == String.Empty
? String.IsNullOrEmpty(name)
Das Fragezeichen weist das Direktfenster an, einen Ausdruck auszuwerten.
Drücken Sie F5, um die Ausführung des Programms fortzusetzen.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.
Löschen Sie den Breakpoint durch Klicken auf den Punkt am linken Rand des Codefensters. Andere Möglichkeiten zum Löschen eines Haltepunkts bestehen darin, F9 zu drücken oder Debuggen > Haltepunkt umschalten auszuwählen, während die Codezeile markiert ist.
Schrittweises Ausführen eines Programms
Mit Visual Studio können Sie ein Programm auch zeilenweise durchlaufen und die Ausführung jeder einzelnen Zeile überwachen. Normalerweise würden Sie einen Breakpoint festlegen und den Programmablauf in einem kleinen Teil des Programmcodes verfolgen. Da dieses Programm klein ist, können Sie das gesamte Programm schrittweise durchlaufen. Obwohl derzeit kein Debuggen erfolgt, hat Visual Studio den Fokus:
Wählen Sie Debuggen>Einzelschritt aus. Eine andere Möglichkeit zum Debuggen jeweils einer Anweisung besteht darin, F11 zu drücken.
Visual Studio markiert einen Pfeil neben der nächsten Zeile der Ausführung und zeigt diesen an.
C#
Visual Basic
An diesem Punkt wird im Fenster Lokal angezeigt, dass das
args
-Array leer ist undname
undcurrentDate
Standardwerte aufweisen. Darüber hinaus hat Visual Studio ein leeres Konsolenfenster geöffnet.Drücken Sie die Taste F11. Visual Studio hebt nun die nächste auszuführende Zeile hervor. Das Fenster Lokal ist unverändert, und das Konsolenfenster bleibt leer.
C#
Visual Basic
Drücken Sie die Taste F11. Visual Studio hebt die Anweisung hervor, die die Zuweisung der Variablen
name
enthält. Das Fenster Lokal zeigt, dassname
den Wertnull
aufweist, und das Konsolenfenster zeigt die Zeichenfolge „What is your name?“ an.Reagieren Sie auf die Eingabeaufforderung, indem Sie eine Zeichenfolge in das Konsolenfenster eingeben und die EINGABETASTE drücken. Die Konsole reagiert nicht, und die eingegebene Zeichenfolge wird nicht im Konsolenfenster angezeigt, aber die Console.ReadLine-Methode wird dennoch Ihre Eingabe erfassen.
Drücken Sie die Taste F11. Visual Studio hebt die Anweisung hervor, die die Zuweisung der Variablen
currentDate
enthält. Das Fenster Lokale Variablen zeigt den vom Aufruf der Methode Console.ReadLine zurückgegebenen Wert an. Im Konsolenfenster wird auch die Zeichenfolge angezeigt, die Sie an der Eingabeaufforderung eingegeben haben.Drücken Sie die Taste F11. Das Fenster Lokal zeigt den Wert der Variablen
currentDate
nach der Zuweisung aus der DateTime.Now-Eigenschaft an. Das Konsolenfenster ist unverändert.Drücken Sie die Taste F11. Visual Studio ruft die Console.WriteLine(String, Object, Object)-Methode auf. Das Konsolenfenster zeigt die formatierte Zeichenfolge an.
Wählen Sie Debuggen>Ausführen bis Rücksprung aus. Eine weitere Möglichkeit, die schrittweise Ausführung zu beenden, besteht darin, UMSCHALT+F11 zu drücken.
Das Konsolenfenster zeigt eine Meldung an und wartet, bis Sie eine Taste drücken.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.
Verwenden der Releasebuildkonfiguration
Nachdem Sie die Debugversion der Anwendung getestet haben, sollten Sie auch die Releaseversion kompilieren und testen. Die endgültige Releaseversion umfasst Compileroptimierungen, die manchmal das Verhalten einer Anwendung negativ beeinträchtigen können. Compileroptimierungen, die zur Verbesserung der Leistung entwickelt wurden, können z. B. Racebedingungen in Multithreadanwendungen erstellen.
Ändern Sie zum Erstellen und Testen der endgültigen Produktversion der Konsolenanwendung die Buildkonfiguration auf der Symbolleiste von Debuggen in Freigabe.
Wenn Sie F5 drücken oder Projektmappe erstellen im Menü Build auswählen, kompiliert Visual Studio die Releaseversion der Anwendung. Sie können sie dann wie die Debugversion testen.
Nächste Schritte
In diesem Tutorial haben Sie Debugtools von Visual Studio verwendet. Im nächsten Tutorial veröffentlichen Sie eine bereitstellbare Version der App.