2013-10-12 16 views
6

C'è un modo per vedere dove si trova la variabile nella memoria?Variabile JavaScript posizione memoria

In ActionScript, ad esempio in modalità di debug si può vedere la posizione di memoria della variabile

Sto usando strumenti per gli sviluppatori di Google Chrome dove posso vedere le variabili in modalità debug, ma non ci sono informazioni circa la posizione di memoria di la variabile.

Esistono strumenti del browser che mostrano la posizione della memoria variabile?

+1

Sono curioso, perché avresti bisogno - o anche * vuoi * - di sapere questo? – delnan

+1

Può essere molto utile nel debug alcune volte. Se ci sono due variabili con lo stesso nome, è possibile differenziarle per la posizione di memoria. Se esegui il debug usando 'Step into next function call' a volte puoi facilmente seguire la variabile se sai che è la locazione di memoria. – onetwo12

+0

@ onetwo12: non possono esserci due variabili con lo stesso nome. Se si trovano in ambiti diversi, uno di questi è inattivo o l'uno si oscura nell'altro. La catena di portata li mostra loro. – Bergi

risposta

7

Take a memory snapshot. Questo mostrerà in dettaglio che tipo di oggetti stanno fluttuando, dove e quanti sono.

Example view

Naturalmente, non vi mostrerà la memoria esatta o registrati gli indirizzi, ma difficilmente si avrà bisogno di quelli per il debug di javascript.

4

No, non è possibile. A causa del modo in cui javascript interpreta i lavori, è piuttosto difficile ottenere l'indirizzo di memoria.

+0

Potresti approfondire le ragioni? I valori possono essere nei registri, ma questo è un problema per qualsiasi debugger e lo risolvono abbastanza bene. – delnan

+0

Non solo nei registri. Ad esempio, V8 rappresenta internamente alcune variabili come oggetti che uniscono valori di molte variabili. Non è semplice calcolare quale variabile è effettivamente assegnata a un oggetto specifico e quanta memoria è occupata dalla variabile js singola. Questo è il motivo per cui esistono strumenti per ottenere un riferimento alle variabili dirette. –

+0

Ma può mostrare i valori correnti, quindi chiaramente * fa * capire dove si trova ogni variabile. Anche se quella logica non è valida e tutto il resto fallisce, è comunque possibile disattivare le ottimizzazioni problematiche quando si esegue w/debugger. – delnan