Freigeben ü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

Zum Aktivieren des Fensters Arbeitsspeicher muss unter Tools>Optionen (oder Debuggen>Optionen) >Debuggen>Allgemein die Option Debugging auf Adressebene aktivieren ausgewählt sein.

Öffnen eines Speicherfensters:

  1. Stellen Sie sicher, dass unter Tools>Optionen (oder Debuggen>Optionen) > >Debuggen>Allgemein die Option Debugging auf Adressebene aktivieren aktiviert ist.

  2. Starten Sie das Debuggen, indem Sie den grünen Pfeil auswählen, F5-drücken oder Debuggen>Debuggen startenauswählen.

  3. 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 erneute Auswertung eines Ausdrucks im Feld Adresse zu erzwingen, wählen Sie das abgerundete Pfeilsymbol "Automatisch neu bewerten" aus.

Im Fenster Arbeitsspeicher werden Ausdrücke vom Typ Adresse standardmäßig als Live-Ausdrücke behandelt, 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 Sie nicht möchten, dass sich der Inhalt des Speicherfensters während der Ausführung der App ändert, 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 haben keinen Zugriff auf das Feld Adresse oder andere Tools, 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.