打破变量值的变化

问题描述 投票:41回答:3

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

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

我想它就像是一个“监视变量”,但我希望能够看到callstack并在实际发生变量变化时暂停它。

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

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

javascript debugging watch breakpoints
3个回答
18
投票

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

Object.Watch Tutorial

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

http://getfirebug.com/javascript


10
投票

我在Chrome中使用此库取得了成功,它似乎支持所有主流浏览器。

https://gist.github.com/eligrey/384583

只需包含.js文件,然后调用:

yourObject.watch('someProperty', function() { 
    doWhatYouWant(); 
    debugger; 
    console.write('this too'); 
    alert('Object Changed'); //etc 
});

-2
投票

我不知道我是否误解了你的问题。如果您想在Chrome开发者工具的js调试会话中观看表达式并在达到某个值时停止,则它相当简单。

您可以简单地在要检查的值的行上放置断点,然后单击鼠标右键并选择“编辑断点...”。将弹出一个对话框,提示输入表达式,执行将在其值为true时停止。

例如,假设您有一个循环,并且您正在向其中的变量添加一个单元,并且希望在变量等于3时停止执行。循环中的表达式如下所示:

n = i++;

您必须在该行上设置断点,并且要监视的表达式(在“编辑断点...”提示之后)将是n == 3。运行代码时,当变量达到该值时,它将停在那里。

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

© www.soinside.com 2019 - 2024. All rights reserved.