有没有办法以编程方式设置断点(例如,在调用命名函数时)?

时间:2014-10-23 08:11:28

标签: javascript google-chrome debugging breakpoints developer-tools

我正在研究一些JavaScript - 当然! - 我正在Chrome中进行一些调试。

现在,我希望在调用函数(具有给定名称)时以编程方式启用断点

  1. 它应该像断点一样运作。 debugger关键字总是中断(uhg!)并且是一个丑陋的工件,可以放入代码中删除。

  2. 它不应该需要手动源代码导航/交互。由于源是通过自动构建过程组合而来的,因此这是一项耗时的工作。

  3. 理想情况下,它会像简单的和编程控制一样,例如。

    Debugger.setBreakpoint({onFunction: "Foo.prototype.bar"})
    

    有没有办法设置一个断点,以便在没有手动导航当前加载的脚本的情况下调用特定(命名)函数

    如果不是以编程方式设想的,有没有办法通过设置评论的断点? (断点,而非debugger - 休息。)

    (我可修改为在其他浏览器中使用类似的开发人员工具,只要它在Windows上运行 - 但Chrome解决方案,如果存在,则是理想的。)

2 个答案:

答案 0 :(得分:7)

在Chrome开发者工具中,您可以使用debug(function)语句来调用函数并在其中进行分解。

如果你有一个确切的函数引用,还有一种方法 var func = function(){ if (arguments.callee._debug) { debugger; } }

_debug标记设为true
func._debug = true

然后将停止函数func()。这很棘手,这不会有效strict mode

答案 1 :(得分:3)

如何编写一个可以放置断点的函数:

function setBreakpoint (fn) {
    return function () {
       debugger;
       fn.apply(this, arguments)
    }
}

在您的控制台中,您可以覆盖要中断的功能:

Foo.prototype.bar = setBreakpoint(Foo.prototype.bar);