Usa il nuovo Controllo memoria per ispezionare la memoria ArrayBuffer
, TypedArray
e DataView
in JavaScript, nonché WebAssembly.Memory
di applicazioni Wasm scritte in C++.
Apri Controllo memoria
Esistono alcuni modi per aprire la funzionalità Controllo memoria.
Apri dal menu
- Apri DevTools.
- Fai clic su Altre opzioni > Altri strumenti > Controllo memoria.
Apri durante il debug
- Apri una pagina con JavaScript
ArrayBuffer
. Utilizzeremo questa pagina demo. - Apri DevTools.
- Apri il file demo-js.js nel riquadro Origini e imposta un punto di interruzione alla riga 18.
- Aggiorna la pagina.
- Espandi la sezione Ambito nel riquadro Debugger a destra.
Puoi aprire la funzionalità Controllo memoria:
- Dall'icona. Fai 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.
- Dall'icona. Fai clic sull'icona accanto alla proprietà
Ispeziona più oggetti
- Puoi controllare anche DataView o TypedArray. Ad esempio,
b2
è unTypedArray
. Per controllarlo, fai clic con il tasto destro del mouse sulla proprietàb2
e seleziona Mostra nel riquadro Controllo memoria (ancora nessuna icona perTypedArray
oDataView
). - Viene aperta una nuova scheda in Controllo memoria. Tieni presente che puoi ispezionare più oggetti contemporaneamente.
Controllo memoria
Lo strumento Controllo memoria è costituito da tre aree principali:
Barra di navigazione
- L'input dell'indirizzo mostra l'indirizzo 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
. - I buffer di memoria potrebbero essere più lunghi di una pagina. Anziché scorrere, puoi utilizzare i pulsanti sinistra e destra per spostarti.
- I pulsanti a sinistra consentono la navigazione in avanti o all'indietro.
- Per impostazione predefinita, il buffer viene aggiornato automaticamente quando cammini. Se non lo è, il pulsante di aggiornamento ti offre la possibilità di aggiornare la memoria e i relativi contenuti.
Buffer di memoria
- A sinistra, l'indirizzo viene visualizzato in formato esadecimale.
- Anche la memory viene mostrata in formato esadecimale, ogni byte è separato da uno spazio. Il byte attualmente selezionato è evidenziato. Puoi fare clic sul byte o navigare con la tastiera (a sinistra, a destra, in alto, in basso).
- Sul lato destro è mostrata una rappresentazione ASCII della memoria. Un'evidenziazione mostra il valore corrispondente ai bit selezionati nel byte. Come per la memoria, puoi fare clic sul byte o navigare con la tastiera (a sinistra, a destra, in alto, in basso).
Controllo valore
- Una barra degli strumenti in alto presenta un pulsante per passare dalla big a small endian alla viceversa e per aprire le impostazioni. Apri le impostazioni per selezionare i tipi di valori da visualizzare in base ai valori predefiniti nella finestra di ispezione.
- L'area principale mostra tutte le interpretazioni di valori in base alle impostazioni. Per impostazione predefinita, vengono mostrati tutti gli elementi.
- L'opzione encoding è cliccabile. Puoi scegliere tra dec, esadecimale, ott per i numeri interi e sci e dec per i numeri in virgola mobile.
Ispezione della memoria in corso...
Esaminiamo la memoria insieme.
- Segui questi passaggi per avviare il debug.
- Modifica l'indirizzo in
0x00000027
nell'input dell'indirizzo. - Osserva la rappresentazione ASCII e le interpretazioni dei valori. Al momento non tutti i valori sono vuoti.
- Nota il pulsante blu Vai all'indirizzo accanto a
Pointer 32-bit
ePointer 64-bit
. Puoi fare clic per passare all'indirizzo. I pulsanti non sono selezionabili e non sono cliccabili se gli indirizzi non sono validi. - Fai clic su Riprendi l'esecuzione dello script per visualizzare i passaggi del codice.
- Nota che la rappresentazione ASCII è stata aggiornata. Vengono aggiornate anche tutte le interpretazioni dei valori.
- Personalizziamo la Controllo valori in modo che mostri solo la rappresentazione in virgola mobile. Fai clic sul pulsante delle impostazioni e seleziona solo In virgola mobile a 32 bit e In virgola mobile a 64 bit.
- Cambiamo la codifica da
dec
asci
. Nota che le rappresentazioni dei valori vengono aggiornate di conseguenza. - Prova a spostarti nel buffer di memoria con la tastiera o la barra di navigazione. Ripeti il passaggio 4 per osservare le variazioni dei valori.
Ispezione della memoria di WebAssembly
L'oggetto WebAssembly.Memory
è un ArrayBuffer
che contiene i byte non elaborati della memoria dell'oggetto. Il riquadro Controllo memoria ti consente di ispezionare questi oggetti nelle applicazioni Wasm scritte in C++.
Per sfruttare appieno l'ispezione WebAssembly.Memory
:
- Utilizza Chrome 107 o versioni successive. Controlla la tua versione all'indirizzo
chrome://version/
. - Installa l'estensione C/C++ DevTools Support (DWARF). Questo è un plug-in per eseguire il debug delle applicazioni WebAssembly C/C++ utilizzando le informazioni di debug di DWARF.
Per ispezionare WebAssembly.Memory
di un oggetto:
- Apri DevTools in questa pagina demo.
- Nel riquadro Origini, apri
demo-cpp.cc
e imposta un punto di interruzione nella funzionemain()
alla riga 15:x[i] = n - i - 1;
. - Ricarica la pagina per eseguire l'applicazione. Il debugger si mette in pausa in corrispondenza del punto di interruzione.
- Nel riquadro Debugger, espandi Ambito > Locale.
Fai clic sull'icona 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.
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
.
Per saperne di più, consulta: