Używanie okien pamięci w debugerze programu Visual Studio (C#, C++, Visual Basic, F#)
Podczas debugowania w oknie pamięci jest wyświetlana ilość pamięci używanej przez aplikację.
Okna debugera, takie jak Watch, Autos, Locals, i okno dialogowe QuickWatch wyświetla zmienne przechowywane w określonych lokalizacjach w pamięci. W oknie Pamięci przedstawiono ogólny obraz. Widok pamięci jest wygodny do przeglądania dużych partii danych (takich jak bufory lub długie ciągi znaków), które nie są dobrze wyświetlane w innych oknach.
Okno Pamięci nie jest ograniczone do wyświetlania danych. Wyświetla wszystko w przestrzeni pamięci, w tym dane, kod oraz losowe śmieciowe bity w nieprzypisanej pamięci.
Okno Pamięci nie jest dostępne na potrzeby debugowania skryptów i SQL-a. Te języki nie rozpoznają koncepcji pamięci.
Otwieranie okna pamięci
Podobnie jak w przypadku innych okien debugera, okna pamięci są dostępne tylko podczas sesji debugowania.
Ważny
Aby włączyć okna pamięci, należy zaznaczyć opcję debugowania na poziomie adresu w Tools>Options (lub Debug>Options) >Debugowanie>Ogólne.
Otwórz okno Pamięci:
Upewnij się, że opcja Włącz debugowanie na poziomie adresu jest wybrana w Narzędzia>Opcje (lub Debug>Opcje) >Debugowanie>Ogólne.
Rozpocznij debugowanie, wybierając zieloną strzałkę, naciskając F5lub wybierając pozycję Debugowanie>Rozpocznij debugowanie.
W obszarze Debug>Windows>pamięć, wybierz Pamięć 1, Pamięć 2, Pamięć 3, lub Pamięć 4. (Niektóre wersje programu Visual Studio oferują tylko jedno okno pamięci ).
Wiele okien umożliwia obsługę widoków dla różnych obszarów w przestrzeni pamięci w tym samym czasie.
Poruszanie się w oknie pamięci
Przestrzeń adresowa komputera jest duża i można łatwo utracić orientację, przewijając okno Pamięć.
Wyższe adresy pamięci są wyświetlane w dolnej części okna. Aby wyświetlić wyższy adres, przewiń w dół. Aby wyświetlić niższy adres, przewiń w górę.
W większości scenariuszy chcesz znaleźć określoną lokalizację pamięci.
Znajdowanie lokalizacji pamięci
Możesz natychmiast przejść do określonego adresu w oknie pamięci przy użyciu przeciągania i upuszczania lub wprowadzając adres w polu Adres. Pole Adres akceptuje alfanumeryczne adresy i wyrażenia, które przekształcają się w adresy, takie jak e.User.NonroamableId
.
Aby wymusić natychmiastowe przeliczenie wyrażenia w polu Adres , wybierz ikonę zaokrąglonej strzałki Automatycznie przeszacuj .
Domyślnie okno pamięci traktuje wyrażenia adres jako dynamiczne wyrażenia, które są ponownie oceniane podczas uruchamiania aplikacji. Wyrażenia na żywo mogą być przydatne, na przykład, aby wyświetlić pamięć, do której odwołuje się zmienna wskaźnikowa.
Przeciągnij i upuść, aby przejść do lokalizacji pamięci:
W dowolnym oknie debugera wybierz adres pamięci lub zmienną wskaźnika zawierającą adres pamięci.
Przeciągnij i upuść adres lub wskaźnik w oknie pamięci.
Ten adres pojawia się w polu Adres, a okno pamięci dostosowuje się do wyświetlania tego adresu u góry.
Wprowadzanie lokalizacji w polu Adres w celu przeniesienia do lokalizacji pamięci:
Wpisz lub wklej adres lub wyrażenie w polu Adres i naciśnij Wprowadź, lub wybierz go z listy rozwijanej w polu Adres.
Ten adres pojawia się w polu Adres, a okno pamięci dostosowuje się do wyświetlania tego adresu u góry.
Dostosowywanie okna Pamięci
Domyślnie zawartość pamięci jest wyświetlana jako liczba całkowita 1-bajtowa w formacie szesnastkowym, a szerokość okna określa liczbę wyświetlanych kolumn. Możesz dostosować sposób, w jaki w oknie pamięci jest wyświetlana zawartość pamięci.
Zmień format zawartości pamięci:
- Kliknij prawym przyciskiem myszy w oknie pamięci i wybierz odpowiednie formaty z menu kontekstowego.
Zmień liczbę kolumn w oknie Pamięć:
- Wybierz strzałkę listy rozwijanej obok pola Kolumny, a następnie wybierz liczbę kolumn do wyświetlenia lub wybierz Auto do automatycznego dostosowania na podstawie szerokości okna.
Jeśli nie chcesz, aby zawartość okna Pamięć zmieniała się podczas działania aplikacji, możesz wyłączyć ocenę dynamiczną wyrażeń.
Przełącz ocenę na żywo:
Kliknij prawym przyciskiem myszy okno pamięci, a następnie wybierz pozycję Przeszacuj automatycznie w menu kontekstowym.
Nota
Ocena wyrażeń na żywo jest przełącznikiem i jest domyślnie włączona, dlatego wybranie opcji Ponownie oceniaj automatycznie powoduje wyłączenie. Wybranie Automatyczna ponowna ocena włącza ją z powrotem.
Możesz ukryć lub wyświetlić pasek narzędzi u góry okna pamięci. Nie będziesz mieć dostępu do pola adresu ani innych narzędzi, gdy pasek narzędzi jest ukryty.
Przełącz wyświetlanie paska narzędzi:
- Kliknij prawym przyciskiem myszy w okno pamięci i wybierz Pokaż pasek narzędzi w menu kontekstowym. Pasek narzędzi jest wyświetlany lub znika w zależności od poprzedniego stanu.
Podążaj za wskaźnikiem po pamięci (C/C++)
W aplikacjach kodu natywnego można użyć nazw rejestru jako wyrażeń na żywo. Na przykład możesz użyć wskaźnika stosu, aby postępować zgodnie ze stosem.
Podążaj za wskaźnikiem w pamięci
W oknie pamięciadres wprowadź wyrażenie wskaźnika, które znajduje się w bieżącym zakresie. W zależności od języka, może być konieczna dereferencja.
Naciśnij Enter.
W przypadku użycia polecenia debugowania, takiego jak Krok, adres pamięci wyświetlany w polu Adres i w górnej części okna Pamięć zmienia się automatycznie w miarę zmiany wskaźnika.
Wyświetlanie wskaźników pamięci (.NET)
Jeśli chcesz wyświetlić zawartość obiektu .NET na podstawie wskaźnika pamięci, takiego jak adres uzyskany z migawki sterty , możesz to zrobić, używając notacji {CLR}@Address
. Adres musi być wskaźnikiem do pamięci, np. 0x1D102A581B0. Wprowadź wskaźnik pamięci w notacji {CLR}@Address
w polu Adres w oknie Pamięć . Alternatywnie możesz użyć tej samej notacji, aby dodać zegarek przy użyciu okna Watch.
Aby uzyskać adres wskaźnika pamięci z zrzutu sterty, otwórz zrzut, wybierz Debuguj Zarządzaną Pamięć, co otwiera narzędzie Użycie Pamięci. Kliknij prawym przyciskiem myszy obiekt, którym jesteś zainteresowany, a następnie wybierz Wyświetl wystąpienia.
Powiązana zawartość
- Wyświetlanie danych w debuggerze