Inspektor pamięci: przejrzyj tablica tablica, typ tablicy, DataView i pamięć Wasm.

Sofia Emelianowa
Sofia Emelianova

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

  1. Otwórz Narzędzia deweloperskie.
  2. Kliknij Więcej opcji Więcej > Więcej narzędzi > Inspektor pamięci.Menu inspektora pamięci

Otwórz podczas debugowania

  1. Otwórz stronę z JavaScriptem ArrayBuffer. Skorzystamy z tej strony demonstracyjnej.
  2. Otwórz Narzędzia deweloperskie.
  3. Otwórz plik demo-js.js w panelu Źródła i ustaw punkt przerwania w wierszu 18.
  4. Odśwież stronę.
  5. W panelu Debuger po prawej stronie rozwiń sekcję Zakres.
  6. 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.

    Pokaż w panelu Narzędzie do inspekcji pamięci

Sprawdź wiele obiektów

  1. Możesz też sprawdzić obiekty DataView i TypedArray. np. b2 to TypedArray. 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 ikony TypedArray ani DataView).
  2. W inspektorze pamięci zostanie otwarta nowa karta. Pamiętaj, że możesz sprawdzać wiele obiektów jednocześnie. Nowa karta w inspektorze pamięci

Inspektor pamięci

Inspektor pamięci

Inspektor pamięci obejmuje 3 główne obszary:

Pasek nawigacyjny

  1. 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.
  2. 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.
  3. Przyciski po lewej stronie umożliwiają do przechodzenia do przodu i do tyłu.
  4. 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

Bufor pamięci

  1. Po lewej stronie adres będzie widoczny w formacie szesnastkowym.
  2. 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ół).
  3. 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

Inspektor wartości

  1. 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. przycisk paska narzędzi
  2. W obszarze głównym widoczne są wszystkie interpretacje wartości zgodnie z ustawieniami. Domyślnie pokazywane są wszystkie.
  3. Kodowanie można kliknąć. Dostępne są wartości dziesiętne, szesnastkowe, ośmiokątne i sci oraz dziesiętne w przypadku liczb zmiennoprzecinkowych. Przełącznik kodowania

Sprawdzam pamięć

Sprawdźmy pamięć.

  1. Aby rozpocząć debugowanie, wykonaj te czynności.
  2. Zmień adres w polu danych wejściowych na 0x00000027. wpisywanie adresu
  3. Zwróć uwagę na reprezentację ASCII i interpretacje wartości. Wszystkie wartości są obecnie puste.
  4. Zwróć uwagę na niebieski przycisk Przejdź do adresu obok elementów Pointer 32-bit i Pointer 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ąć.Przycisk Przejdź do adresu
  5. Kliknij Wznów wykonywanie skryptu, by przejść przez kod.Wznów wykonywanie skryptu
  6. Zwróć uwagę, że reprezentacja ASCII została zaktualizowana. Zaktualizowane zostaną też wszystkie interpretacje wartości.Zaktualizowano wszystkie interpretacje wartości
  7. 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. ustawienia pozwalające dostosować inspektora wartości
  8. Zmieńmy kodowanie z dec na sci. Zwróć uwagę, że reprezentacja wartości została odpowiednio zaktualizowana.Zmień kodowanie.
  9. 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:

  1. Otwórz Narzędzia deweloperskie na tej stronie demonstracyjnej.
  2. W panelu Źródła otwórz demo-cpp.cc i ustaw punkt przerwania w funkcji main() w wierszu 15: x[i] = n - i - 1;.
  3. Odśwież stronę, aby uruchomić aplikację. Debuger zatrzymuje się w punkcie przerwania.
  4. W panelu Debuger rozwiń Zakres > Lokalne.
  5. Kliknij ikonę Pokaż w inspektorze pamięci. obok tablicy x: int[10].

    Możesz też kliknąć tablicę prawym przyciskiem myszy i wybrać Pokaż w panelu Narzędzie do inspekcji pamięci.

Tablica x została otwarta w inspektorze pamięci.

Aby zatrzymać wyróżnianie pamięci obiektów, w panelu Inspektor pamięci najedź kursorem na plakietkę obiektu i kliknij przycisk x.

Przestań wyróżniać pamięć obiektu.

Więcej informacji: