Controllo memoria: ispeziona Arraybuffer, TypedArray, DataView e Wasm Memory.

Jecelyn Yeen
Jecelyn Yeen
Sofia Emelianova
Sofia Emelianova

Utilizza il nuovo strumento di ispezione della memoria per ispezionare la memoria di ArrayBuffer, TypedArray e DataView in JavaScript, nonché la memoria di WebAssembly.Memory delle applicazioni Wasm scritte in C++.

Apri Controllo memoria

Esistono diversi modi per aprire Memory Inspector.

Apri dal menu

  1. Apri DevTools.
  2. Fai clic su Altre opzioni Altre > Altri strumenti > Memory Inspector. Menu dello strumento di controllo della memoria

Apri durante il debug

  1. Apri una pagina con JavaScript ArrayBuffer. Utilizzeremo questa pagina demo.
  2. Apri DevTools.
  3. Apri il file demo-js.js nel riquadro Origini e imposta un punto di interruzione alla riga 18.
  4. Aggiorna la pagina.
  5. Espandi la sezione Ambito nel riquadro Debugger a destra.
  6. Puoi aprire Memory Inspector:

    • Dall'icona. Facendo clic sull'icona accanto alla proprietà buffer oppure
    • Dal menu contestuale. Fai clic con il tasto destro del mouse sulla proprietà buffer e seleziona Mostra nel riquadro Controllo memoria.

    Mostra nel riquadro Controllo memoria

Ispeziona più oggetti

  1. Puoi anche esaminare DataView o TypedArray. Ad esempio, b2 è un TypedArray. Per ispezionarla, fai clic con il tasto destro del mouse sulla proprietà b2 e seleziona Mostra nel riquadro Controllo memoria (nessuna icona per TypedArray o DataView ancora).
  2. Nello strumento Memory Inspector viene aperta una nuova scheda. Tieni presente che puoi esaminare più oggetti contemporaneamente. Nuova scheda nello strumento di controllo della memoria

Memory Inspector

Memory Inspector

Lo strumento Memory Inspector è costituito da tre aree principali:

Barra di navigazione

  1. L'input dell'indirizzo mostra l'indirizzo in byte corrente in formato esadecimale. Puoi inserire un nuovo valore per passare a una nuova posizione nel buffer di memoria. Ad esempio, prova a digitare 0x00000008.
  2. I buffer di memoria potrebbero essere più lunghi di una pagina. Anziché scorrere, puoi utilizzare i pulsanti sinistra e destra per la navigazione.
  3. I pulsanti a sinistra consentono di spostarsi in avanti/all'indietro.
  4. Per impostazione predefinita, il buffer viene aggiornato automaticamente al passo con i passi. In caso contrario, il pulsante di aggiornamento consente di aggiornare la memoria e aggiornare i relativi contenuti.

Buffer di memoria

Buffer di memoria

  1. A sinistra, l'indirizzo viene visualizzato in formato esadecimale.
  2. Anche la memoria viene mostrata in formato esadecimale, con ogni byte separato da uno spazio. Il byte attualmente selezionato viene evidenziato. Puoi fare clic sul byte o spostarti con la tastiera (sinistra, destra, su, giù).
  3. Una rappresentazione ASCII della memoria è mostrata sul lato destro. Un'evidenziazione mostra il valore corrispondente ai bit selezionati nel byte. Come con la memoria, puoi fare clic sul byte o spostarti con la tastiera (sinistra, destra, su, giù).

Controllo valore

Controllo valore

  1. La barra degli strumenti in alto è dotata di un pulsante per passare da big a small endian e per aprire le impostazioni. Apri le impostazioni per selezionare i tipi di valori da visualizzare per impostazione predefinita nello strumento di controllo. pulsante della barra degli strumenti
  2. L'area principale mostra tutte le interpretazioni dei valori secondo le impostazioni. Per impostazione predefinita, sono visualizzati tutti.
  3. La codifica è cliccabile. Puoi spostarti tra dec, esadecimale, ott per il numero intero e sci e dec per i numeri in virgola mobile. Opzione di codifica

Ispezione della memoria

Esaminiamo la memoria insieme.

  1. Segui questi passaggi per avviare il debug.
  2. Modifica l'indirizzo in 0x00000027 nel input dell'indirizzo. input dell'indirizzo
  3. Osserva la rappresentazione ASCII e le interpretazioni dei valori. Al momento tutti i valori sono vuoti.
  4. Osserva il pulsante blu Passa all'indirizzo accanto a Pointer 32-bit e Pointer 64-bit. Puoi farci clic sopra per passare all'indirizzo. I pulsanti non sono selezionabili e non possono essere selezionati se gli indirizzi non sono validi. Pulsante Vai all'indirizzo
  5. Fai clic su Riprendi l'esecuzione dello script per visualizzare il codice. Riprendi l'esecuzione dello script
  6. Come puoi notare, la rappresentazione ASCII è ora aggiornata. Vengono aggiornate anche tutte le interpretazioni dei valori. Tutte le interpretazioni dei valori sono aggiornate
  7. Personalizza lo strumento di controllo dei valori in modo che mostri solo il punto mobile. Fai clic sul pulsante Impostazioni e seleziona solo Virgola mobile a 32 bit e Virgola mobile a 64 bit. impostazioni per personalizzare lo strumento di controllo dei valori
  8. Cambiamo la codifica da dec a sci. Osserva che le rappresentazioni dei valori vengono aggiornate di conseguenza. Cambia la codifica.
  9. Prova a spostarti nel buffer di memoria con la tastiera o con la barra di navigazione. Ripeti il passaggio 4 per osservare le modifiche dei valori.

Ispezione della memoria WebAssembly

L'oggetto WebAssembly.Memory è un ArrayBuffer che contiene i byte non elaborati della memoria degli oggetti. Il riquadro Controllo memoria consente di esaminare questi oggetti nelle applicazioni Wasm scritte in C++.

Per sfruttare appieno l'ispezione di WebAssembly.Memory:

  • Utilizzi Chrome 107 o versioni successive. Controlla la tua versione all'indirizzo chrome://version/.
  • Installa l'estensione C/C++ DevTools Support (DWARF). Plug-in per il debug delle applicazioni WebAssembly C/C++ mediante informazioni di debug DWARF.

Per esaminare WebAssembly.Memory di un oggetto:

  1. Apri DevTools in questa pagina demo.
  2. Nel riquadro Origini, apri demo-cpp.cc e imposta un punto di interruzione nella funzione main() alla riga 15: x[i] = n - i - 1;.
  3. Ricarica la pagina per eseguire l'applicazione. Il debugger si ferma in corrispondenza del punto di interruzione.
  4. Nel riquadro Debugger, espandi Ambito > Locale.
  5. Fai clic sull'icona Mostra in Controllo memoria. accanto all'array x: int[10].

    In alternativa, fai clic con il tasto destro del mouse sull'array e seleziona Mostra nel riquadro Controllo memoria.

L'array x aperto in Controllo memoria.

Per interrompere l'evidenziazione della memoria degli oggetti, nel riquadro Controllo memoria, passa il mouse sopra il badge dell'oggetto e fai clic sul pulsante x.

Interrompi l'evidenziazione della memoria degli oggetti.

Per ulteriori informazioni, vedi: