与此处的其他问题类似,like this one。
有没有办法打破任何JavaScript调试器中变量值的变化? (比如IE Developer工具,Visual Studio或Firebug)?
我想它类似于“监视变量”,但我希望能够看到callstack并在实际发生对变量的更改时暂停它。
另一种方法可能是使用自定义setter覆盖值设置,并在其中设置断点,但不幸的是,这对IE AFAIK不起作用。
更新 似乎这种类型的行为至少对于非托管代码written in C++是可用的。所以我想也许用C ++(Google的V8)编写的javascript引擎可能有类似的东西,但这似乎没有我想要的东西
答案 0 :(得分:18)
您甚至不需要IDE - 您可以使用“Object.watch()”:
如果你使用任何一个调试器,我强烈推荐使用Firebug。对于您的所有Javascript,HTML和CSS需求: - ):
答案 1 :(得分:10)
我在Chrome中使用此库取得了成功,它似乎支持所有主流浏览器。
https://gist.github.com/eligrey/384583
只需包含.js文件,然后调用:
yourObject.watch('someProperty', function() {
doWhatYouWant();
debugger;
console.write('this too');
alert('Object Changed'); //etc
});
答案 2 :(得分:-2)
我不知道我是否误解了你的问题。如果您想在Chrome开发者工具的js调试会话中观看表达式并在达到某个值时停止,那么它非常简单。
您可以简单地在要检查的值的行上放置断点,然后单击鼠标右键并选择"编辑断点..."。将弹出一个对话框,提示输入表达式,执行将在其值为真时停止。
例如,假设您有一个循环,并且您正在向其中的变量添加一个单元,并且希望在变量等于3时停止执行。循环中的表达式如下所示:
n = i++;
您必须在该行设置断点,并且要监视的表达式(在#34;编辑断点..."提示之后)将为n == 3
。运行代码时,当变量达到该值时,它将停在那里。
您会注意到您的情况已设置,因为您的断点会变为橙色而不是蓝色。