我正在编写一个简单的命令行Node.js应用程序,其中GLOBAL.thingies
神秘地结束了undefined
。
我使用了node-inspector,我可以在任何给定的行中设置断点,并且我有"观察表达式"对于该变量,就像我在任何调试器中那样。但是,当表达式变为undefined
时,我无法找到。如何在变量发生变化时设置断点?
Node-inspector版本0.9.2。
节点版本0.12.2
Chrome版本41
答案 0 :(得分:1)
我不认为node-inspector具有您要求的功能。
有一些典型的方法可以分析这样的问题,并希望找出正在发生的事情。
理论化你想要的东西
首先,列出GLOBAL.thingies
突然以undefined
的形式返回的列表。在这个特定原因中,您不仅要查找GLOBAL.thingies
的赋值,还要使用一个没有{{1}的新对象替换整个GLOBAL
对象。它上面的属性。
代码检查
对项目中涉及的所有代码执行grep操作,并检查和研究任何能够更改变量的代码。您必须对您的grep充满创意,以确保包含所有可能的参考类型。在您的特定示例中,thingies
和GLOBAL.thingies
将是访问它的不同方式。在此原因中,您可能只想搜索GLOBAL["thingies"]
的任何可能用途,或者甚至想要包含对thingies
的所有引用。
每次参考代码时都会对其进行研究并确定是否是导致问题的嫌疑人。
使用断点进行二进制搜索
在某些情况下,您可以通过使用记录语句来记录代码来简化二进制搜索的范围,该记录语句记录相关变量的值,以便您可以更快地识别变量何时从好到坏以及哪些操作发生在 - 将二进制搜索的范围限制为该操作。如果在可疑区域中有很多异步操作(更难以跨越),则可能需要使用日志记录工具来帮助您将其缩小到发生问题的位置。