Use o Inspetor de memória para inspecionar a memória ArrayBuffer, TypedArray e DataView em JavaScript, bem como WebAssembly.Memory de aplicativos Wasm escritos em C++.
Visão geral
O Memory Inspector organiza o conteúdo da memória e ajuda a navegar rapidamente por matrizes grandes. É possível conferir os valores ASCII do conteúdo da memória ao lado dos bytes e selecionar diferentes endianidades. Use o Memory Inspector enquanto depura seu app da Web para ter um fluxo de trabalho eficiente.
Abrir o Memory Inspector
Há algumas maneiras de abrir o Inspetor de memória.
Abrir no menu
- Abra o DevTools.
- Clique em Mais opções
> Mais ferramentas > Inspetor de memória.

Abrir durante a depuração
- Abra uma página com JavaScript
ArrayBuffer. Vamos usar esta página de demonstração. - Abra o DevTools.
- Abra o arquivo demo-js.js no painel Sources e defina um ponto de interrupção na linha 18.
- Atualize a página.
- Expanda a seção Escopo no painel Desenvolvedor de depuração à direita.
É possível abrir o Inspetor de memória:
- Pelo ícone. Clicando no ícone ao lado da propriedade
bufferou - No menu de contexto. Clique com o botão direito do mouse na propriedade
buffere selecione Revelar no painel do Memory Inspector.

- Pelo ícone. Clicando no ícone ao lado da propriedade
Inspecionar vários objetos
- Você também pode inspecionar DataView ou TypedArray. Por exemplo,
b2é umTypedArray. Para inspecionar isso, clique com o botão direito do mouse na propriedadeb2e selecione Revelar no painel do Memory Inspector (ainda não há ícone paraTypedArrayouDataView). - Uma nova guia é aberta no Memory inspector. Você pode inspecionar vários objetos de uma vez.

O Memory Inspector

O Memory Inspector é composto por três áreas principais:
Barra de navegação

- A entrada de endereço mostra o endereço de byte atual no formato hexadecimal. Você pode inserir um novo valor para pular para um novo local no buffer de memória. Por exemplo, digite
0x00000008. - Os buffers de memória podem ser maiores que uma página. Em vez de rolar, use os botões esquerda e direita para navegar.
- Os botões à esquerda permitem a navegação para frente/para trás.
- Por padrão, o buffer é atualizado automaticamente ao avançar. Caso contrário, o botão Atualizar oferece a opção de atualizar a memória e o conteúdo.
Buffer de memória

- À esquerda, o endereço é mostrado no formato hexadecimal.
- A memória também é mostrada em formato hexadecimal, com cada byte separado por um espaço. O byte selecionado é destacado. Você pode clicar no byte ou navegar com o teclado (esquerda, direita, cima, baixo).
- Uma representação ASCII da memória é mostrada no lado direito. Um destaque mostra o valor correspondente aos bits selecionados no byte. Assim como na memória, você pode clicar no byte ou navegar com o teclado (esquerda, direita, cima, baixo).
Inspetor de valor

- Uma barra de ferramentas na parte de cima tem um botão para alternar entre endian grande e pequeno e abrir as configurações. Abra as configurações para selecionar quais tipos de valor eles querem ver por padrão no inspetor.

- A área principal mostra todas as interpretações de valor de acordo com as configurações. Por padrão, todos são mostrados.
- A codificação é clicável. É possível alternar entre dec, hex, oct para números inteiros e sci, dec para números de ponto flutuante.

Como inspecionar a memória
Vamos inspecionar a memória juntos.
- Siga estas etapas para iniciar a depuração.
- Mude o endereço para
0x00000027na entrada de endereço.
- Observe a representação ASCII e as interpretações de valor. Todos os valores estão vazios no momento.
- Observe o botão azul Ir para o endereço ao lado de
Pointer 32-bitePointer 64-bit. Clique nele para ir até o endereço. Os botões ficam esmaecidos e não podem ser clicados se os endereços não forem válidos.
- Clique em Retomar execução de script para percorrer o código.

- A representação ASCII agora está atualizada. Todas as interpretações de valor também são atualizadas.

- Vamos personalizar o Inspetor de valor para mostrar apenas ponto flutuante. Clique no botão settings e marque apenas Float 32-bit e Float 64-bit.

- Vamos mudar a codificação de
decparasci. Observe que as representações de valor são atualizadas de acordo.
- Tente navegar pelo buffer de memória com o teclado ou usando a barra de navegação. Repita a etapa 4 para observar as mudanças nos valores.
Inspeção de memória do WebAssembly
O objeto WebAssembly.Memory é um ArrayBuffer que armazena os bytes brutos da memória do objeto. O painel Memory Inspector permite inspecionar esses objetos em aplicativos Wasm escritos em C++.
Para aproveitar ao máximo a inspeção WebAssembly.Memory:
- Use o Chrome 107 ou mais recente. Confira sua versão em
chrome://version/. - Instale a extensão C/C++ DevTools Support (DWARF). É um plug-in para depurar aplicativos C/C++ da WebAssembly usando informações de depuração DWARF.
Para inspecionar o WebAssembly.Memory de um objeto:
- Abra o DevTools na página de demonstração.
- No painel Origens, abra
demo-cpp.cce defina um ponto de interrupção na funçãomain()na linha 15:x[i] = n - i - 1;. - Recarregue a página para executar o aplicativo. O depurador pausa no ponto de interrupção.
- No painel Debugger, expanda Escopo > Local.
Clique no ícone
ao lado da matriz x: int[10].Como alternativa, clique com o botão direito do mouse na matriz e selecione Revelar no painel do Memory Inspector.

Para parar de destacar a memória do objeto, no painel Memory Inspector, passe o cursor sobre o ícone do objeto e clique no botão x.

Para saber mais, veja: