Schnellstart: Debuggen mit C++ mithilfe des Visual Studio-Debuggers
Der Visual Studio-Debugger umfasst viele nützliche Features zum Debuggen von Apps. In diesem Thema werden einige der grundlegenden Funktionen erläutert.
Erstellen eines neuen Projekts
Öffnen Sie Visual Studio, und erstellen Sie ein Projekt.
Drücken Sie ESC, um das Startfenster zu schließen. Geben Sie STRG + Q ein, um das Suchfeld zu öffnen, geben Sie C++ ein, und wählen Sie Vorlagen und dann Neues Konsolen-App-Projekt erstellen aus. Wählen Sie im angezeigten Dialogfeld Erstellen aus.
Wenn die Projektvorlage Windows-Konsolenanwendung nicht angezeigt wird, öffnen Sie unter Tools>Tools und Features abrufen ... den Visual Studio-Installer. Der Visual Studio-Installer wird gestartet. Wählen Sie die Workload Desktopentwicklung mit C++ , und klicken Sie dann auf Ändern.
Visual Studio erstellt daraufhin das Projekt.
Ersetzen Sie in „MyDbgApp.cpp“ den folgenden Code
int main() { return 0; }
durch den folgenden (
#include "stdafx.h"
nicht entfernen):#include <list> #include <iostream> using namespace std; void doWork() { list <int> c1; c1.push_back(10); c1.push_back(20); const list <int> c2 = c1; const int &i = c2.front(); const int &j = c2.front(); cout << "The first element is " << i << endl; cout << "The second element is " << j << endl; } int main() { doWork(); }
Haltepunkt festlegen
Ein Breakpoint gibt an, an welcher Stelle Visual Studio ausgeführten Code anhalten soll. So können Sie einen Blick auf die Werte von Variablen oder das Speicherverhalten werfen oder überprüfen, ob eine Verzweigung im Code ausgeführt wird. Es handelt sich dabei um ein grundlegendes Debugfeature.
Wenn Sie einen Breakpoint festlegen möchten, klicken Sie im Bundsteg auf den Bereich links neben dem Funktionsaufruf
doWork
. Alternativ können Sie aber auch die Codezeile auswählen und F9 drücken.Drücken Sie dann F5, oder klicken Sie auf Debuggen > Debuggen starten.
Der Debugger hält an dem Breakpoint an, den Sie festlegen. Der gelbe Pfeil deutet auf die Anweisung, bei der der Debugger und die App-Ausführung ausgesetzt werden. Die Zeile mit dem Funktionsaufruf
doWork
wurde noch nicht ausgeführt.Tipp
Verwenden Sie bei Breakpoints in einer Schleife oder Rekursion oder bei sehr vielen Breakpoints, die Sie häufig schrittweise durchlaufen, einen bedingten Breakpoint, damit die Codeausführung NUR unterbrochen wird, wenn bestimmte Bedingungen erfüllt sind. Wenn Sie mit einem bedingten Breakpoint arbeiten, sparen Sie Zeit und erleichtern sich möglicherweise das Debuggen von Problemen, die nur schwierig zu reproduzieren sind.
Wenn Sie versuchen, in C++ Fehler zu debuggen, die im Zusammenhang mit dem Arbeitsspeicher stehen, können Sie Breakpoints auch dazu verwenden, Adresswerte (suchen Sie nach NULL-Werten) und die Anzahl von Verweisen zu untersuchen.
Navigieren durch den Code
Es gibt verschiedene Befehle, über die der Debugger zum Fortfahren bewegt werden kann. In diesem Artikel wird ein nützlicher Befehl zur Codenavigation erläutert, der ab Visual Studio 2017 verfügbar ist.
Wenn der Vorgang am Breakpoint unterbrochen wurde, zeigen Sie auf die c1.push_back(20)
-Anweisung, bis die grüne Schaltfläche Ausführung bis Klick angezeigt wird, und wählen Sie dann diese Schaltfläche Ausführung bis Klick aus.
Dann wird die App weiter ausgeführt, ruft doWork
auf, und wird bei der Codezeile ausgesetzt, bei der Sie die Schaltfläche angeklickt haben.
Häufig werden die Tastaturbefehle F10 und F11 verwendet, um Code durchzugehen. Weitere ausführliche Anweisungen finden Sie unter Ein erster Blick auf den Visual Studio-Debugger.
Untersuchen von Variablen in einem Datentipp
Zeigen Sie in der aktuellen Codezeile (zu erkennen an dem gelben Ausführungszeiger) mit der Maus auf das
c1
-Objekt, um Datentipps anzuzeigen.Der aktuelle Wert der Variable
c1
wird angezeigt, und Sie können die Eigenschaften untersuchen. Wenn Sie beim Debuggen einen nicht erwarteten Wert antreffen, enthalten die vorhergehenden oder die aufrufenden Codezeilen möglicherweise einen Fehler.Erweitern Sie den Datentipp, um die Eigenschaftswerte des
c1
-Objekts einzusehen.Wenn Sie den Datentipp anheften möchten, damit bei der Codeausführung weiterhin der Wert von
c1
angezeigt wird, klicken Sie auf das Stecknadelsymbol. (Sie können den angehefteten Datentipp an eine geeignete Stelle verschieben.)
Bearbeiten von Code und Fortsetzen des Debuggens
Wenn Sie in einer Debugsitzung eine Änderung feststellen, die Sie in Ihrem Code testen möchten, ist dies auch kein Problem.
Klicken Sie auf die zweite Instanz von
c2.front()
, und ändern Siec2.front()
inc2.back()
.Drücken Sie wiederholt F10 (oder klicken Sie auf Debuggen > Prozedurschritt), um den Debugger fortzusetzen und den bearbeiteten Code auszuführen.
Wenn Sie F10 drücken, führt der Debugger jeweils nur eine Anweisung aus, überspringt Funktionen aber, anstatt diese schrittweise auszuführen (der Code, den Sie überspringen, wird weiter ausgeführt).
Weitere Informationen zum Bearbeiten und Fortfahren und zu Einschränkungen von Features finden Sie unter Edit and Continue (Bearbeiten und Fortfahren).
Nächste Schritte
In diesem Tutorial haben Sie gelernt, wie Sie den Debugger starten, Code schrittweise durchlaufen und Variablen untersuchen. Sie sollten sich einen allgemeinen Überblick über die Debugger-Features verschaffen und die zugehörigen Links aufrufen, um weitere Informationen hierzu zu erhalten.