2013-10-12 46 views
6

有沒有辦法查看變量在內存中的位置?JavaScript變量內存位置

在ActionScript例如在調試模式下可以看到的變量

的內存位置我使用谷歌Chrome開發者工具,我可以看到在調試模式中的變量,但有關於的存儲位置沒有資料變量。

是否有任何顯示可變內存位置的瀏覽器工具?

+1

我很好奇,爲什麼你需要 - 甚至是想要知道這個? – delnan

+1

在調試時可能非常有用。如果有兩個名稱相同的變量,可以通過內存位置區分它們。如果你使用'進入下一個函數調用'進行調試,有時你可以很容易地跟隨變量,如果你知道它的內存位置。 – onetwo12

+0

@ onetwo12:不能有兩個具有相同名稱的變量。如果它們處於不同的範圍內,那麼它們中的任何一個都不活動,或者其中一個不在其他範圍內。範圍鏈確實向您顯示。 – Bergi

回答

7

Take a memory snapshot。這將詳細展示哪種物體在哪裏浮動,在哪裏以及它們有多少。

Example view

當然,它不會告訴你確切的內存或寄存器地址,但你很難將需要這些調試JavaScript。

4

不,這是不可能的。由於JavaScript解釋方式的工作原理,獲取內存地址非常困難。

+0

你能詳細說明原因嗎?值可能在寄存器中,但這對任何調試器都是一個問題,並且它們解決得很好。 – delnan

+0

不僅在寄存器中。例如,V8內部將一些變量表示爲合併多個變量值的對象。計算實際分配給特定對象的變量以及單個js變量佔用多少內存並不容易。這是爲什麼獲得直接變量地址的工具不存在的原因。 –

+0

但它可以顯示當前值,所以它清楚*確定*找出每個變量的位置。即使該邏輯不健全,並且所有其他操作都失敗,仍然可以在運行w/debugger時關閉有問題的優化。 – delnan