49

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

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

我想这有点像“监视变量”,但我希望能够看到调用堆栈并在变量实际发生更改时暂停它。

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

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

4

3 回答 3

18

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

Object.Watch 教程

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

http://getfirebug.com/javascript

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

2019 年更新:

  • Object.Watch是古代历史。巧合的是,它在大多数现代浏览器中都不可用。

  • 这些天我个人最喜欢的 JS 调试工具是Chrome 开发者工具

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

  • 您可以使用 Chrome 调试器(就像使用 FF Firebug 一样)进行几乎任何“预期的”调试操作 - 包括设置监视。

  • Chrome 调试器与 MSVC IDE 很好地集成在一起。

  • 两者都是“免费的”(至少“像啤酒一样免费”);两者都在 Windows、Mac 和 Linux 上运行良好。

于 2011-10-27T01:20:30.520 回答
11

我在 Chrome 中使用这个库取得了成功,它看起来支持所有主要浏览器。

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

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

yourObject.watch('someProperty', function() { 
    doWhatYouWant(); 
    debugger; 
    console.write('this too'); 
    alert('Object Changed'); //etc 
});
于 2013-09-27T02:39:55.653 回答
-2

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

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

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

n = i++;

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

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

于 2015-09-23T12:17:36.263 回答