打破变量值的变化

时间:2011-10-27 00:56:26

标签: javascript debugging watch breakpoints

与此处的其他问题类似,like this one

有没有办法打破任何JavaScript调试器中变量值的变化? (比如IE Developer工具,Visual Studio或Firebug)?

我想它类似于“监视变量”,但我希望能够看到callstack并在实际发生对变量的更改时暂停它。

另一种方法可能是使用自定义setter覆盖值设置,并在其中设置断点,但不幸的是,这对IE AFAIK不起作用。

更新 似乎这种类型的行为至少对于非托管代码written in C++是可用的。所以我想也许用C ++(Google的V8)编写的javascript引擎可能有类似的东西,但这似乎没有我想要的东西

3 个答案:

答案 0 :(得分:18)

您甚至不需要IDE - 您可以使用“Object.watch()”:

Object.Watch Tutorial

如果你使用任何一个调试器,我强烈推荐使用Firebug。对于您的所有Javascript,HTML和CSS需求: - ):

http://getfirebug.com/javascript

答案 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。运行代码时,当变量达到该值时,它将停在那里。

您会注意到您的情况已设置,因为您的断点会变为橙色而不是蓝色。