2013-10-12 8 views
6

変数がメモリ内のどこにあるかを確認する方法はありますか?デバッグモードで例えばActionScriptでJavaScript変数のメモリ位置

あなたは私がデバッグモードで変数を見ることができるGoogle Chromeのデベロッパーツールを使用していますが、のメモリ位置についての情報が存在しない変数

のメモリ位置を見ることができます変数。

可変メモリの場所を示すブラウザツールはありますか?

+1

私は好奇心が強いのですが、なぜこれを知る必要がありますか? – delnan

+1

何度かのデバッグに非常に役立ちます。同じ名前の変数が2つある場合は、メモリの場所で区別することができます。 「次の関数呼び出しにステップインする」を使用してデバッグすると、メモリの場所を知っていれば変数を簡単にフォローできます。 – onetwo12

+0

@ onetwo12:同じ名前の変数は2つありません。それらが異なるスコープにある場合、どちらか一方が非アクティブであるか、他方が非アクティブです。スコープチェーンはそれらをあなたに示します。 – Bergi

答えて

7

Take a memory snapshot。これは、どのような種類のオブジェクトが浮遊しているか、どこに何個存在するかを詳細に示します。もちろん

Example view

、それはあなたの正確なメモリを表示したり、アドレスを登録していますが、ほとんどのJavaScriptをデバッグするため、これらを必要としませんしません。

4

いいえ、できません。 javascriptの解釈の仕方によって、メモリアドレスを取得するのは非常に困難です。

+0

あなたは理由を詳述できますか?値はレジスタ内にあるかもしれませんが、それはどのデバッガにとっても問題であり、非常にうまく解決します。 – delnan

+0

レジスタだけでなく、例えば、V8は内部的にいくつかの変数を多くの変数の値をマージするオブジェクトとして表します。どの変数が実際に特定のオブジェクトに割り当てられ、どのくらいのメモリが単一の変数によって占有されているかを計算するのは簡単ではありません。直接変数を取得するためのツールが存在しない理由は、Thasです。 –

+0

しかし、それは現在の値を示すことができるので、各変数がどこにあるのかを明確に*把握しています。そのロジックが健全でなくてもすべてが失敗したとしても、w/debuggerを実行しているときに問題のある最適化をオフにすることはできます。 – delnan

関連する問題