Użyj nowego inspektora pamięci do inspekcji pamięci ArrayBuffer
, TypedArray
i DataView
w JavaScript oraz WebAssembly.Memory
aplikacji Wasm napisanych w C++.
Otwórz inspektora pamięci
Inspektora pamięci można otworzyć na kilka sposobów.
Otwórz z menu
- Otwórz Narzędzia deweloperskie.
- Kliknij Więcej opcji > Więcej narzędzi > Inspektor pamięci.
Otwórz podczas debugowania
- Otwórz stronę z JavaScriptem
ArrayBuffer
. Skorzystamy z tej strony demonstracyjnej. - Otwórz Narzędzia deweloperskie.
- Otwórz plik demo-js.js w panelu Źródła i ustaw punkt przerwania w wierszu 18.
- Odśwież stronę.
- W panelu Debuger po prawej stronie rozwiń sekcję Zakres.
Możesz otworzyć Inspektora pamięci:
- Kliknij ikonę. Kliknij ikonę obok właściwości
buffer
lub - W menu kontekstowym. Kliknij prawym przyciskiem myszy właściwość
buffer
i wybierz Pokaż w panelu Narzędzie do inspekcji pamięci.
- Kliknij ikonę. Kliknij ikonę obok właściwości
Sprawdź wiele obiektów
- Możesz też sprawdzić obiekty DataView i TypedArray. np.
b2
toTypedArray
. Aby to sprawdzić, kliknij prawym przyciskiem myszy właściwośćb2
i wybierz Pokaż w panelu Narzędzie do inspekcji pamięci (nie ma jeszcze ikonyTypedArray
aniDataView
). - W inspektorze pamięci zostanie otwarta nowa karta. Pamiętaj, że możesz sprawdzać wiele obiektów jednocześnie.
Inspektor pamięci
Inspektor pamięci obejmuje 3 główne obszary:
Pasek nawigacyjny
- W polu Podanie adresu widoczny jest aktualny adres bajtowy w formacie szesnastkowym. Możesz podać nową wartość, aby przejść do nowej lokalizacji w buforze pamięci. Spróbuj na przykład wpisać
0x00000008
. - Bufory pamięci mogą być dłuższe niż strona. Zamiast przewijać listę, możesz poruszać się po stronach, używając przycisków w lewo i w prawo.
- Przyciski po lewej stronie umożliwiają do przechodzenia do przodu i do tyłu.
- Domyślnie bufor jest automatycznie aktualizowany podczas kroków. Jeśli tak nie jest, przycisk odśwież umożliwia odświeżenie pamięci i zaktualizowanie jej zawartości.
Bufor pamięci
- Po lewej stronie adres będzie widoczny w formacie szesnastkowym.
- Dane pamięci są też wyświetlane w formacie szesnastkowym, a każdy bajt jest oddzielony spacją. Zaznaczony aktualnie bajt zostanie podświetlony. Możesz kliknąć bajt lub nawigować za pomocą klawiatury (w lewo, w prawo, w górę, w dół).
- Reprezentacja pamięci w formacie ASCII jest widoczna po prawej stronie. Wyróżnienie pokazuje odpowiednią wartość wybranym bitom w bajcie. Podobnie jak w przypadku pamięci, możesz kliknąć bajt lub nawigować za pomocą klawiatury (w lewo, w prawo, w górę, w dół).
Inspektor wartości
- Górny pasek narzędzi zawiera przycisk do przełączania się między dużym i małym endianem oraz do otwierania ustawień. Otwórz ustawienia, aby wybrać typy wartości, które mają być domyślnie widoczne w inspektorze.
- W obszarze głównym widoczne są wszystkie interpretacje wartości zgodnie z ustawieniami. Domyślnie pokazywane są wszystkie.
- Kodowanie można kliknąć. Dostępne są wartości dziesiętne, szesnastkowe, ośmiokątne i sci oraz dziesiętne w przypadku liczb zmiennoprzecinkowych.
Sprawdzam pamięć
Sprawdźmy pamięć.
- Aby rozpocząć debugowanie, wykonaj te czynności.
- Zmień adres w polu danych wejściowych na
0x00000027
. - Zwróć uwagę na reprezentację ASCII i interpretacje wartości. Wszystkie wartości są obecnie puste.
- Zwróć uwagę na niebieski przycisk Przejdź do adresu obok elementów
Pointer 32-bit
iPointer 64-bit
. Możesz go kliknąć, aby przejść do danego adresu. Jeśli adresy są nieprawidłowe, przyciski są wyszarzone i nie można ich kliknąć. - Kliknij Wznów wykonywanie skryptu, by przejść przez kod.
- Zwróć uwagę, że reprezentacja ASCII została zaktualizowana. Zaktualizowane zostaną też wszystkie interpretacje wartości.
- Zmodyfikujmy Inspektora wartości tak, aby wyświetlał tylko liczbę zmiennoprzecinkową. Kliknij przycisk ustawień i zaznacz tylko pola Liczba zmiennoprzecinkowa 32-bitowa i Liczba zmiennoprzecinkowa 64-bitowa.
- Zmieńmy kodowanie z
dec
nasci
. Zwróć uwagę, że reprezentacja wartości została odpowiednio zaktualizowana. - Spróbuj poruszać się po buforze pamięci za pomocą klawiatury lub paska nawigacyjnego. Powtórz krok 4, aby zaobserwować zmiany wartości.
Inspekcja pamięci WebAssembly
Obiekt WebAssembly.Memory
to obiekt ArrayBuffer
, który zawiera nieprzetworzone bajty pamięci obiektów. Panel Inspektor pamięci umożliwia sprawdzanie takich obiektów w aplikacjach Wasm napisanych w C++.
Aby w pełni wykorzystać możliwości inspekcji WebAssembly.Memory
:
- używać Chrome 107 lub nowszej wersji, Sprawdź wersję na
chrome://version/
. - Zainstaluj rozszerzenie C/C++ DevTools Support (DWARF). Jest to wtyczka do debugowania aplikacji C/C++ WebAssembly przy użyciu danych debugowania DWARF.
Aby sprawdzić WebAssembly.Memory
obiektu:
- Otwórz Narzędzia deweloperskie na tej stronie demonstracyjnej.
- W panelu Źródła otwórz
demo-cpp.cc
i ustaw punkt przerwania w funkcjimain()
w wierszu 15:x[i] = n - i - 1;
. - Odśwież stronę, aby uruchomić aplikację. Debuger zatrzymuje się w punkcie przerwania.
- W panelu Debuger rozwiń Zakres > Lokalne.
Kliknij ikonę obok tablicy
x: int[10]
.Możesz też kliknąć tablicę prawym przyciskiem myszy i wybrać Pokaż w panelu Narzędzie do inspekcji pamięci.
Aby zatrzymać wyróżnianie pamięci obiektów, w panelu Inspektor pamięci najedź kursorem na plakietkę obiektu i kliknij przycisk x
.
Więcej informacji: