我正在寫一個簡單的命令行Node.js應用程序,其中GLOBAL.thingies
正在爲我神祕地結束undefined
。如何突破觀察變量?
我使用了節點檢查器,並且我可以在任何給定的行上設置斷點,並且對該變量有「監視表達式」,就像我在任何調試器中一樣。但是,我無法找到何時該表達式變爲undefined
。如何在變量發生變化時設置斷點?
節點檢查器版本0.9.2。
節點版本0.12.2
是Chrome 41版
我正在寫一個簡單的命令行Node.js應用程序,其中GLOBAL.thingies
正在爲我神祕地結束undefined
。如何突破觀察變量?
我使用了節點檢查器,並且我可以在任何給定的行上設置斷點,並且對該變量有「監視表達式」,就像我在任何調試器中一樣。但是,我無法找到何時該表達式變爲undefined
。如何在變量發生變化時設置斷點?
節點檢查器版本0.9.2。
節點版本0.12.2
是Chrome 41版
我不認爲節點檢查有你要求的功能。
有幾個典型的方法來分析這樣的問題,並希望找出發生了什麼。
建構理論什麼,你正在尋找
首先,讓自己如何GLOBAL.thingies
可能會突然回來爲undefined
列表。在這個特定的原因中,你不僅要尋找GLOBAL.thingies
的任務,而且還可能用一個新對象代替整個GLOBAL
對象,而該對象只是沒有thingies
屬性。
代碼檢查
做一個grep的所涉及項目中的所有代碼,並檢查和研究能夠改變你的變量的任何代碼。你必須對你的grep有創意,確保你包含所有可能的引用類型。在你的具體例子中,GLOBAL.thingies
和GLOBAL["thingies"]
可能是不同的訪問方式。在這個原因中,您可能只想搜索thingies
的任何可能用途,或者甚至想要包括對GLOBAL
的所有引用。
在每次參考代碼研究它,並決定它是否是一個可疑的問題導致你的問題。
與斷點二進制搜索
在某些情況下,可以通過記錄日誌記錄相關變量值的日誌語句來簡化二進制搜索的範圍,以便更快速地確定變量何時從好到差,發生了哪些操作 - 將二分搜索的範圍僅限於該操作。如果您在可疑區域有很多異步操作(要跨越很難),則可能需要使用日誌工具來幫助您縮小問題發生的位置。
感謝您的協助。事實證明,我在某個時刻分配給'thingies'(沒有GLOBAL),這必須是同一個對象。 – 2015-04-02 13:22:50