Untersuchen von Variablen über die Fenster „Auto“ und „Lokale Variablen“

In den Fenstern Auto und Lokale Variablen werden Variablenwerte während des Debuggens angezeigt. Die Fenster sind nur während einer Debugsitzung verfügbar. Im Fenster Auto werden Variablen angezeigt, die in der Nähe der aktuellen Anweisung, wo der Debugger angehalten wurde, verwendet werden. Im Fenster Lokale Variablen werden Variablen angezeigt, die im lokalen Gültigkeitsbereich definiert sind, der in der Regel aus der aktuellen Funktion oder Methode besteht.

Hinweis

Wenn Sie zum ersten Mal versuchen, Code zu debuggen, sollten Sie Debuggen für Einsteiger sowie Debugverfahren und -tools lesen, bevor Sie diesen Artikel durchgehen.

Das Fenster Auto ist für C#-, Visual Basic-, C++- und Python-Code, aber nicht für JavaScript oder F# verfügbar.

Wenn Sie das Fenster Auto während des Debuggens öffnen möchten, klicken Sie auf Debuggen>Fenster>Auto, oder drücken Sie STRG+ALT+V>A.

Wenn Sie das Fenster Lokale Variablen während des Debuggens öffnen möchten, klicken Sie auf Debuggen>Fenster>Lokale Variablen, oder drücken Sie ALT+4.

Hinweis

Dieses Thema gilt für Visual Studio unter Windows. Informationen zu Visual Studio für Mac finden Sie unter Datenvisualisierungen.

Verwenden der Fenster „Auto“ und „Lokale Variablen“

Arrays und Objekte werden in den Fenstern Auto und Lokale Variablen als Struktursteuerelemente angezeigt. Klicken Sie auf den Pfeil links neben dem Variablennamen, damit die Ansicht erweitert wird und die Felder und Eigenschaften angezeigt werden. Dies ist ein Beispiel für ein System.IO.FileStream-Objekt im Fenster Lokale Variablen:

Screenshot des Fensters „Lokale Variablen“, wobei die Datei auf den Wert „System.IO.FileStream“ festgelegt ist.

Screenshot des Fensters „Lokale Variablen“, wobei die Datei auf den Wert „System.IO.FileStream“ festgelegt ist.

Ein roter Wert im Fenster Lokale Variablen oder Auto bedeutet, dass sich der Wert seit der letzten Auswertung geändert hat. Die Änderung kann aus einer vorherigen Debugsitzung stammen oder daran liegen, dass Sie den Wert im Fenster geändert haben.

Das Standardzahlenformat in Debuggerfenstern ist das Dezimalformat. Wenn Sie es jedoch auf das Hexadezimalformat umstellen möchten, klicken Sie mit der rechten Maustaste in das Fenster Lokale Variablen oder Auto, und wählen Sie Hexadezimale Anzeige aus. Die Änderung wird in allen Debuggerfenstern übernommen.

Bearbeiten von Variablenwerten in den Fenstern „Lokale Variablen“ oder „Auto“

Die meisten Werte in den Fenstern Auto und Lokale Variablen lassen sich bearbeiten, indem Sie darauf doppelklicken und einen neuen Wert eingeben.

Sie können Sie einen Ausdruck für einen Wert eingeben, etwa a + b. Der Debugger akzeptiert im die meisten gültigen Sprachausdrücke.

In nativem C++-Code müssen Sie möglicherweise den Kontext eines Variablennamens qualifizieren. Weitere Informationen finden Sie unter Kontextoperator (C++).

Achtung

Bevor Sie Änderungen an Werten und Ausdrücken vornehmen, sollten Sie die Konsequenzen genau kennen. Solche Änderungen können bspw. zu folgenden Problemen führen:

  • Die Auswertung bestimmter Ausdrücke kann zur Änderung des Werts einer Variablen führen oder sich auf den Programmzustand auswirken. Wird beispielsweise var1 = ++var2 ausgewertet, wird der Wert von var1 und var2 geändert. Diese Ausdrücke haben sogenannte Nebenwirkungen. Nebenwirkungen können unerwartete Ergebnisse verursachen, wenn Sie sich ihrer Existenz nicht bewusst sind.

  • Das Bearbeiten von Gleitkommawerten kann aufgrund der Dezimal-zu-Binär-Konvertierung von Nachkommastellen zu geringfügigen Ungenauigkeiten führen. Auch eine scheinbar harmlose Änderung kann die Bits einer Gleitkommavariable ändern.

Suchen im Fenster „Auto“ oder „Lokale Variablen“

Sie können mithilfe der Suchleiste oberhalb der Fenster Auto und Lokale Variablen nach Schlüsselwörtern in den Spalten „Name“, „Wert“ und „Typ“ suchen. Drücken Sie auf EINGABE, oder klicken Sie auf einen der Pfeile, um eine Suche auszuführen. Zum Abbrechen einer laufenden Suche wählen Sie das Symbol „x“ in der Suchleiste aus.

Mit den Pfeilen nach links und rechts (UMSCHALT+F3 bzw. F3) können Sie zwischen gefundenen Übereinstimmungen navigieren.

Screenshot der Suche im Fenster „Lokale Variablen

Screenshot der Suche im Fenster „Lokale Variablen

Über die Dropdown-Liste Tiefer suchen am oberen Rand der Fenster Automatische und Lokale Variablen können Sie die Gründlichkeit der Suche festlegen, indem Sie auswählen, in wie vielen Ebenen von geschachtelten Objekten gesucht werden soll.

Anheften von Eigenschaften in den Fenstern „Auto“ oder „Lokale Variablen“

Hinweis

Dieses Feature wird für .NET Core 3.0 und höher unterstützt.

Mit dem Tool Anheftbare Eigenschaften können Sie Objekte schnell anhand ihrer Eigenschaften in den Fenstern „Auto“ und „Lokale Variablen“ überprüfen. Zum Starten dieses Tools müssen Sie auf eine Eigenschaft zeigen und auf das daraufhin angezeigte Anheften-Symbol klicken. Sie können auch mit der rechten Maustaste auf die Eigenschaft klicken und dann im angezeigten Kontextmenü auf die Option Member als Favorit anheften klicken. Dadurch wird diese Eigenschaft in der Eigenschaftenliste des Objekts an oberste Stelle gesetzt, und der Eigenschaftsname und -wert wird in der Spalte Wert angezeigt. Wenn Sie eine Eigenschaft lösen möchten, wählen Sie das Anheften-Symbol erneut aus, oder wählen Sie im Kontextmenü die Option Member als Favorit lösen aus.

Screenshot der Eigenschaften für das Anheften im Fenster „Lokale Variablen

Sie können beim Anzeigen der Eigenschaftenliste des Objekts in den Fenstern Automatische und Lokale Variablen auch Eigenschaftsnamen umschalten und nicht angeheftete Eigenschaften herausfiltern. Sie können auf die einzelnen Optionen zugreifen, indem Sie in der Symbolleiste oberhalb der Fenster „Auto“ und „Lokale Variablen“ auf die Schaltflächen klicken.

Screenshot der Filterung nach bevorzugten Eigenschaften

Screenshot der Umschaltung zwischen Eigenschaftennamen

Ändern des Kontexts für das Fenster „Auto“ oder „Lokale Variablen“

Mithilfe der Symbolleiste Debugspeicherort können Sie eine gewünschte Funktion oder einen gewünschten Thread oder Prozess auswählen, der den Kontext für die Fenster Auto und Lokale Variablen ändert.

Die Symbolleiste Debugspeicherort wird aktiviert, indem Sie auf den leeren Teil des Symbolleistenbereich klicken und Debugspeicherort aus dem Drop-down-Menü auswählen oder auf Ansicht>Symbolleisten>Debugspeicherort klicken.

Legen Sie einen Haltepunkt fest, und starten Sie das Debuggen. Wenn der Debugger am Haltepunkt ankommt, wird die Ausführung angehalten. Die genaue Stelle im Code wird in der Symbolleiste Debugspeicherort angezeigt.

Screenshot der Symbolleiste „Debugspeicherort“

Screenshot der Symbolleiste „Debugspeicherort“

Variablen im Fenster „Auto“ (C#, C++, Visual Basic, Python)

Je nach Codesprache werden verschiedene Variablen im Fenster Auto angezeigt.

  • In C# und Visual Basic wird im Fenster Auto jede Variable angezeigt, die in der aktuellen oder vorherigen Zeile verwendet wird. In C#- oder Visual Basic-Code deklarieren Sie z. B. die folgenden vier Variablen:

         public static void Main()
         {
            int a, b, c, d;
            a = 1;
            b = 2;
            c = 3;
            d = 4;
         }
    

    Legen Sie den Haltepunkt auf die Zeile c = 3; fest, und starten Sie den Debugger. Wenn die Ausführung angehalten wird, wird Folgendes im Fenster Auto angezeigt:

    Screenshot des Fensters „Auto“ mit auf 0 festgelegtem Wert „c“.

    Screenshot des Fensters „Auto“ mit auf 0 festgelegtem Wert „c“.

    c hat den Wert 0 (Null), weil die Zeile c = 3 noch nicht ausgeführt wurde.

  • In C++ werden im Fenster Auto die Variablen angezeigt, die in den letzten drei Zeilen vor der Zeile verwendet wurden, in der die Ausführung angehalten wurde. In C++-Code deklarieren Sie z. B. sechs Variablen:

         void main() {
             int a, b, c, d, e, f;
             a = 1;
             b = 2;
             c = 3;
             d = 4;
             e = 5;
             f = 6;
         }
    

    Legen Sie den Haltepunkt auf die Zeile e = 5; fest, und führen Sie den Debugger aus. Wenn die Ausführung beendet wird, wird Folgendes im Fenster Auto angezeigt:

    Screenshot des Fensters „Auto“, in dem die Zeile hervorgehoben ist, die den ganzzahligen Wert „c“ (int) mit einem Wert von 3 anzeigt.

    Screenshot des Fensters „Auto“, in dem die Zeile hervorgehoben ist, die den ganzzahligen Wert „c“ (int) mit einem Wert von 3 anzeigt.

    Die Variable e wurde deinitialisiert. Dies liegt daran, dass die Zeile e = 5 noch nicht ausgeführt wurde.

Anzeigen von Rückgabewerten von Methodenaufrufen

In .NET- und C++-Code können Sie Rückgabewerte im Fenster Auto untersuchen, wenn Sie in einem Methodenaufruf einen Prozedurschritt oder einen Rücksprung ausführen. Das Anzeigen der Rückgabewerte eines Methodenaufrufs kann nützlich sein, wenn die Werte nicht in lokalen Variablen gespeichert werden. Eine Methode kann als Parameter oder als Rückgabewert einer anderen Methode verwendet werden.

Im folgenden C#-Code werden z. B. die Rückgabewerte von zwei Funktionen hinzugefügt:

static void Main(string[] args)
{
    int a, b, c, d;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    int x = sumVars(a, b) + subtractVars(c, d);
}

private static int sumVars(int i, int j)
{
    return i + j;
}

private static int subtractVars(int i, int j)
{
    return j - i;
}

So lassen Sie die Rückgabewerte der Methodenaufrufe sumVars() und subtractVars() im Fenster „Auto“ anzeigen:

  1. Legen Sie einen Haltepunkt in der Zeile int x = sumVars(a, b) + subtractVars(c, d); fest.

  2. Starten Sie das Debuggen, und klicken Sie auf Prozedurschritt, oder drücken Sie F10, wenn die Ausführung am Haltepunkt angehalten wird. Daraufhin sollten folgende Rückgabewerte im Fenster Auto angezeigt werden:

    Screenshot des Rückgabewerts im Fenster „Auto“ (C#)

    Screenshot des Rückgabewerts im Fenster „Auto“ (C#)