2

firebug 和 webkit 浏览器中的内置控制台都可以在运行的 Javascript 代码中设置断点,因此您可以像使用任何其他语言一样对其进行调试。

我想知道是否有任何方法可以指示 firebug 或 webkit 在运行时在文件 Y 的 X 行上设置断点,并能够检查我拥有的特定范围内的变量停了下来。

我需要可以在 Chrome(或任何其他 webkit 浏览器)和 Firefox 中运行的东西。对于后者,Firebug 是可接受的依赖项。支持 IE 不是必需的。

我一直在构建一个浏览器内的 IDE(感兴趣的快速视频:http ://www.youtube.com/watch?v=c5lGwqi8L_g )并且想给它更多的肉。

我尝试过的一件事就是debugger;在用户设置它们的地方添加一个额外的行,但这并不是一个理想的解决方案。

4

3 回答 3

5

我想说您绝对可以使用远程调试协议为 webkit 浏览器执行此操作。这是基于 websocket 连接和来回传输的 json 消息协议。

您可以阅读公告和整个协议架构

Chrome 还在其远程开发者工具文档中提供了更多相关信息。

例如,对于调试器域,您可以了解如何使用Debugger.setBreakpointDebugger.setBreakpointByUrlDebugger.setBreakpointsActive来处理断点。

另一方面,正如您在https://developer.mozilla.org/en-US/docs/Tools/Debugger-APIhttps://wiki.mozilla.org/中看到的那样,Mozilla 似乎也在努力解决这个问题Remote_Debugging_Protocol虽然我不知道它的完成状态。

在这种情况下,您可以使用Debugger.Script API setBreakPoint、getBreakPoint、getBreakpoints、clearBreakpoints 和 clearAllBreakpoints 来处理断点

我希望这可以帮助您继续前进。

于 2012-08-26T08:14:57.553 回答
1

不存在这样的事情,至少不使用 JavaScript 的公共、可编写脚本的一面。如果您有一个可以为您执行此操作的特权浏览器扩展程序,那将是可能的。例如,Firebug 有一个调试方法,您可以从它的命令行调用,但不能从页面内的脚本调用。

所以,你有两个解决方案:

  1. 实现您自己的 JavaScript 解释器,您可以随意控制它。不过可能有点太野心勃勃了……
  2. 依赖浏览器扩展,它可以在代码中的任何位置设置断点,向公共代码公开一些 API,并通过 JavaScript 与之交互。但这意味着用户必须安装一些额外的软件才能使用您的“Web IDE”。
于 2012-08-26T06:13:51.110 回答
0

用于_defineSetter__观察变量,并将其与debugger赋值发生时的调用结合起来。

__defineSetter__("name", function() { debugger; });

或定义属性:

function setter () { debugger; }

Object.defineProperty(Math, 'name', { set: setter });

参考

于 2012-08-21T22:29:32.847 回答