Используйте инспектор памяти для проверки памяти ArrayBuffer , TypedArray и DataView в JavaScript, а также WebAssembly.Memory приложений Wasm, написанных на C++.
Обзор
Инспектор памяти упорядочивает содержимое памяти и помогает быстро перемещаться по большим массивам. Вы можете просмотреть значения ASCII содержимого памяти непосредственно рядом с байтами и выбрать другой порядок байтов. Используйте инспектор памяти во время отладки веб-приложения, чтобы повысить эффективность рабочего процесса.
Откройте инспектор памяти
Открыть инспектор памяти можно несколькими способами.
Открыть из меню
- Откройте Инструменты разработчика .
- Нажмите «Дополнительные параметры».
> Дополнительные инструменты > Инспектор памяти . 
Открыть во время отладки
- Откройте страницу с помощью JavaScript
ArrayBuffer. Мы будем использовать эту демонстрационную страницу . - Откройте Инструменты разработчика .
- Откройте файл demo-js.js на панели «Источники» , установите точку останова в строке 18.
- Обновите страницу.
- Разверните раздел «Область» на правой панели «Отладчик» .
Вы можете открыть инспектор памяти :
- Из значка . Нажав на значок рядом со свойством
buffer, или - Из контекстного меню . Щелкните правой кнопкой мыши свойство
bufferи выберите «Показать на панели инспектора памяти» .

- Из значка . Нажав на значок рядом со свойством
Осмотрите несколько объектов
- Вы также можете проверить DataView или TypedArray . Например,
b2— этоTypedArray. Чтобы проверить это, щелкните правой кнопкой мыши свойствоb2и выберите «Показать на панели инспектора памяти» (значка дляTypedArrayилиDataViewпока нет). - В Инспекторе памяти откроется новая вкладка. Обратите внимание, что вы можете проверять несколько объектов одновременно.

Инспектор памяти

Инспектор памяти состоит из 3 основных областей:
Панель навигации

- Ввод адреса показывает текущий адрес байта в шестнадцатеричном формате. Вы можете ввести новое значение, чтобы перейти к новому месту в буфере памяти. Например, попробуйте ввести
0x00000008. - Буферы памяти могут быть длиннее страницы. Вместо прокрутки вы можете использовать левую и правую кнопку для навигации.
- Кнопки слева позволяют осуществлять навигацию вперед/назад .
- По умолчанию буфер автоматически обновляется при шаге. В противном случае кнопка обновления дает вам возможность обновить память и обновить ее содержимое.
Буфер памяти

- Слева адрес отображается в шестнадцатеричном формате.
- Память также отображается в шестнадцатеричном формате, где каждый байт разделен пробелом. Текущий выбранный байт выделяется. Вы можете нажать на байт или перемещаться с помощью клавиатуры (влево, вправо, вверх, вниз).
- Представление памяти в формате ASCII показано справа. Подсветка показывает значение, соответствующее выбранным битам в байте. Как и в случае с памятью, вы можете нажимать на байт или перемещаться с помощью клавиатуры (влево, вправо, вверх, вниз).
Инспектор значений

- На верхней панели инструментов имеется кнопка для переключения между прямым и прямым порядком байтов и открытия настроек . Откройте настройки , чтобы выбрать, какие типы значений они хотят видеть по умолчанию в инспекторе.

- В основной области отображаются все интерпретации значений в соответствии с настройками . По умолчанию показаны все.
- Кодировка кликабельна. Вы можете переключаться между dec, hex, Oct для целых чисел и sci, dec для чисел с плавающей запятой.

Проверка памяти
Давайте вместе проверим память.
- Выполните следующие действия, чтобы начать отладку.
- Измените адрес на
0x00000027во входном адресе .
- Обратите внимание на представление ASCII и интерпретацию значений . На данный момент все значения пусты.
- Обратите внимание на синюю кнопку Перейти к адресу рядом с
Pointer 32-bitиPointer 64-bit. Вы можете нажать на нее, чтобы перейти по адресу. Кнопки неактивны и недоступны для нажатия, если адреса недействительны.
- Нажмите «Возобновить выполнение сценария» , чтобы выполнить код.

- Обратите внимание, что представление ASCII теперь обновлено. Все интерпретации значений также обновляются.

- Давайте настроим инспектор значений так, чтобы он отображал только числа с плавающей запятой . Нажмите на кнопку настроек и отметьте только Float 32-bit и Float 64-bit .

- Давайте изменим кодировку с
decнаsci. Обратите внимание, что представления значений соответствующим образом обновляются.
- Попробуйте перемещаться по буферу памяти с помощью клавиатуры или панели навигации. Повторите шаг 4, чтобы наблюдать изменения значений.
Проверка памяти WebAssembly
Объект WebAssembly.Memory представляет собой ArrayBuffer , содержащий необработанные байты памяти объекта. Панель «Инспектор памяти» позволяет проверять такие объекты в приложениях Wasm, написанных на C++.
Чтобы в полной мере воспользоваться преимуществами проверки WebAssembly.Memory :
- Используйте Chrome 107 или более позднюю версию. Проверьте свою версию на
chrome://version/. - Установите расширение поддержки DevTools C/C++ (DWARF) . Это плагин для отладки приложений C/C++ WebAssembly с использованием отладочной информации DWARF.
Чтобы проверить WebAssembly.Memory объекта:
- Откройте DevTools на этой демонстрационной странице .
- На панели «Источники» откройте
demo-cpp.ccи установите точку останова в функцииmain()в строке 15:x[i] = n - i - 1;. - Перезагрузите страницу, чтобы запустить приложение. Отладчик приостанавливает работу в точке останова.
- На панели «Отладчик» разверните «Область» > «Локальный» .
Нажмите кнопку
значок рядом с массивом x: int[10].Либо щелкните массив правой кнопкой мыши и выберите «Показать на панели инспектора памяти» .

Чтобы прекратить выделение памяти объекта, на панели «Инспектор памяти» наведите указатель мыши на значок объекта и нажмите кнопку x .

Чтобы узнать больше, см.: