更改变量值时中断

Break on a change of variable value

本文关键字:中断 变量值 改变      更新时间:2023-09-26

与这里的其他问题类似,比如这个

是否有一种方法来打破在任何JavaScript调试器的变量值的变化?(如IE开发工具,Visual Studio,或Firebug)?

我猜它类似于"监视变量",但我希望能够看到调用堆栈并在变量实际发生更改时暂停它。

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

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

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

对象。看教程

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

http://getfirebug.com/javascript

===========================================================

2019年更新:

  • 对象。手表是古老的历史。不凑巧的是,它在大多数现代浏览器中是不可用的。

  • 我个人最喜欢的JS调试工具是Chrome Developer Tools.

  • 我个人最喜欢的JS IDE(用于Angular, . net Core等)是Microsoft Visual Studio Code (MSVC)。

  • 你可以做任何"预期"的调试操作-包括设置手表-与Chrome调试器(就像你可以与FF Firebug)。

  • Chrome调试器很好地集成了MSVC IDE。

  • 两者都是"免费的"(至少"像啤酒一样免费");

我在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++;

您必须在该行设置断点,并且要监视的表达式(在"Edit breakpoint…"提示之后)将是n == 3。当运行代码时,当变量达到该值时,它将停止。

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