Teilen über


Verwenden der Speicherfenster im Visual Studio-Debugger (C#, C++, Visual Basic, F#)

Während des Debuggens zeigt das Fenster Speicher den Speicherplatz an, den Ihre App verwendet.

Debuggerfenster wie Watch, Auto, Locals, und im Dialogfeld QuickWatch werden Variablen angezeigt, die an bestimmten Speicherorten im Arbeitsspeicher gespeichert sind. Das Fenster Arbeitsspeicher enthält die Gesamtübersicht. Die Speicheransicht eignet sich zum Untersuchen großer Datenteile (z. B. Puffer oder große Zeichenfolgen), die in den anderen Fenstern nicht gut angezeigt werden.

Das Fenster Speicher ist nicht auf das Anzeigen von Daten beschränkt. In diesem Fenster wird der gesamte Inhalt des Arbeitsspeichers angezeigt, z. B. Daten, Code oder zufällig verteilte Objekte im nicht zugewiesenen Arbeitsspeicher.

Das Speicherfenster ist für skript- oder SQL-Debugging nicht verfügbar. Diese Sprachen erkennen das Konzept des Speichers nicht.

Öffnen eines Speicherfensters

Wie bei anderen Debuggerfenstern auch, ist das Fenster Arbeitsspeicher nur während einer Debugsitzung verfügbar.

Wichtig

Um die Speicherfenster zu aktivieren, muss das Kontrollkästchen Debugging auf Adressebene aktivieren im Abschnitt Debuggen unter Extras (oder Debug) Optionen aktiviert sein.

Öffnen eines Speicherfensters:

  1. Öffnen Sie das Fenster "Werkzeuge" (oder "Debuggen"), erweitern Sie den Abschnitt "Alle Einstellungen>Debugging>Allgemein, und aktivieren Sie das Kontrollkästchen "Adressniveau-Debugging aktivieren".
  1. Öffnen Sie das Dialogfeld Extras (oder Debugoptionen), > erweitern Sie den Abschnitt "Debugging>Allgemein", und aktivieren Sie das Kontrollkästchen "Debugging auf Adressebene aktivieren".
  1. Starten Sie das Debuggen, indem Sie den grünen Pfeil auswählen, F5-drücken oder Debuggen>Debuggen startenauswählen.

  2. Wählen Sie unter Debuggen>Windows>Arbeitsspeicher die Option Arbeitsspeicher 1, Arbeitsspeicher 2, Arbeitsspeicher 3 oder Arbeitsspeicher 4 aus. (Bei einigen Editionen von Visual Studio ist nur ein Fenster vom Typ Arbeitsspeicher verfügbar.)

Mit mehreren Fenstern können Sie Ansichten für verschiedene Bereiche im Arbeitsspeicher gleichzeitig verwalten.

Navigieren im Fenster „Arbeitsspeicher“

Der Adressraum eines Computers ist groß, und Sie können Ihren Platz leicht verlieren, indem Sie im Fenster Speicher scrollen.

Höhere Speicheradressen werden unten im Fenster angezeigt. Um eine höhere Adresse anzuzeigen, scrollen Sie nach unten. Um eine niedrigere Adresse anzuzeigen, scrollen Sie nach oben.

In den meisten Szenarien möchten Sie einen bestimmten Speicherort finden.

Einen Speicherort finden

Sie können sofort zu einer angegebenen Adresse im Speicher-Fenster wechseln, indem Sie Drag-and-Drop verwenden, oder die Adresse im Feld Adresse eingeben. Das Feld Adresse akzeptiert alphanumerische Adressen und Ausdrücke, die zu Adressen interpretiert werden, zum Beispiel e.User.NonroamableId.

Um die sofortige Neubewertung eines Ausdrucks im Feld "Adresse " zu erzwingen, wählen Sie das Symbol " Automatisch neu bewerten " aus.

Standardmäßig behandelt das SpeicherfensterAdressausdrücke als Liveausdrücke, die während der Ausführung der App neu ausgewertet werden. Liveausdrücke können beispielsweise hilfreich sein, um den Speicher anzuzeigen, der von einer Zeigervariable berührt wird.

Verwenden Sie Ziehen und Ablegen, um zu einer Speicherposition zu wechseln:

  1. Wählen Sie in jedem Debuggerfenster eine Speicheradresse oder eine Zeigervariable aus, die eine Speicheradresse enthält.

  2. Ziehen Sie die Adresse oder den Zeiger in das Fenster Arbeitsspeicher.

    Diese Adresse wird im Feld Adresse angezeigt, und das Fenster Speicher passt sich an die Anzeige dieser Adresse oben an.

Eingeben eines Speicherorts im Feld "Adresse", um zu einem Speicherort zu wechseln:

  • Geben Sie die Adresse oder den Ausdruck in das Feld Adresse ein, und drücken Sie Enter, oder wählen Sie sie aus der Dropdownliste im Feld Adresse aus.

    Diese Adresse wird im Feld Adresse angezeigt, und das Fenster Speicher passt sich an die Anzeige dieser Adresse oben an.

    Screenshot des Speicherfensters.

Anpassen des Fensters „Arbeitsspeicher“

Standardmäßig werden Speicherinhalte als 1-Byte-Ganzzahlen im Hexadezimalformat angezeigt, und die Fensterbreite bestimmt die Anzahl der angezeigten Spalten. Sie können anpassen, wie das Speicherfenster Speicherinhalte anzeigt.

Ändern Sie das Format des Speicherinhalts:

  • Klicken Sie mit der rechten Maustaste im Fenster Speicher, und wählen Sie im Kontextmenü die gewünschten Formate aus.

Ändern sie die Anzahl der Spalten im Speicherfenster:

  • Wählen Sie den Dropdownpfeil neben dem Feld Spalten aus und wählen Sie die Anzahl der anzuzeigenden Spalten, oder wählen Sie Auto für die automatische Anpassung basierend auf der Fensterbreite aus.

Wenn der Inhalt des Speicherfensters während der Ausführung der App nicht geändert werden soll, können Sie die Auswertung von Liveausdrücken deaktivieren.

Liveauswertung umschalten:

  • Klicken Sie mit der rechten Maustaste in das Fenster Arbeitsspeicher, und wählen Sie im Kontextmenü die Option Automatisch neu auswerten aus.

    Anmerkung

    Die Live-Auswertung von Ausdrücken ist ein Umschalter, der standardmäßig aktiviert ist. Wenn Sie die Option Automatisch neu auswerten auswählen, wird sie also deaktiviert. Wenn Sie Automatisch neu auswerten erneut auswählen, wird die Option wieder aktiviert.

Die Symbolleiste am oberen Rand des Fensters Arbeitsspeicher kann angezeigt oder ausgeblendet werden. Sie können nicht auf das Adressfeld oder andere Tools zugreifen, wenn die Symbolleiste ausgeblendet ist.

Umschalten der Symbolleistenanzeige:

  • Klicken Sie mit der rechten Maustaste in das Fenster Arbeitsspeicher, und wählen Sie im Kontextmenü die Option Symbolleiste anzeigen aus. Die Symbolleiste wird je nach vorherigem Zustand angezeigt oder ausgeblendet.

Folgen Sie einem Zeiger durch den Speicher (C/C++)

In Apps mit nativem Code können Sie Registernamen als Liveausdrücke verwenden. Sie können beispielsweise den Stapelzeiger verwenden, um dem Stapel zu folgen.

Folgen Sie einem Zeiger im Arbeitsspeicher:

  1. Geben Sie im Fenster Arbeitsspeicher im Feld Adresse einen Zeigerausdruck ein, der im aktuellen Bereich enthalten ist. Je nach verwendeter Sprache müssen Sie u. U. den entsprechenden Verweis aufheben.

  2. Drücken Sie die EINGABETASTE.

    Wenn Sie einen Debug-Befehl wie Schrittverwenden, wird die Speicheradresse, die im Feld Adresse und oben im Fenster Speicher angezeigt wird, automatisch geändert, wenn sich der Zeiger ändert.

Anzeigen von Speicherzeigern (.NET)

Wenn Sie den Inhalt eines .NET-Objekts basierend auf einem Speicherzeiger anzeigen möchten, z. B. eine Adresse, die aus einer Heap-Momentaufnahmeabgerufen wird, können Sie dies mithilfe {CLR}@Address Notation tun. Die Adresse muss ein Zeiger auf den Speicher sein, z. B. 0x1D102A581B0. Geben Sie den Speicherzeiger mithilfe der {CLR}@Address-Schreibweise im Adressfeld des Speicherfensters ein. Alternativ können Sie dieselbe Notation verwenden, um eine Uhr mithilfe des Überwachungsfensters hinzuzufügen.

Um die Speicherzeigeradresse aus einer Heap-Momentaufnahme abzurufen, öffnen Sie das Heap-Speicherabbild, wählen Sie Verwalteten Speicher debuggen aus, wodurch das Tool Speicherauslastung geöffnet wird. Klicken Sie mit der rechten Maustaste auf das Objekt, an dem Sie interessiert sind, und wählen Sie Instanzen anzeigen.