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