以编程方式控制Javascript中的断点?

以编程方式控制Javascript中的断点?

问题描述:

是否可以在任何浏览器中使用任何插件来以编程方式启用或禁用代码中的断点?以编程方式控制Javascript中的断点?

我已经知道设置条件断点,但我真的很感兴趣通过代码设置它们。

+1

可能的重复[在代码中设置一个javascript断点 - 在chrome?](http://stackoverflow.com/questions/10050465/set-a-javascript-breakpoint-in-code-in-chrome)如果只有标题包含关键字“代码”搜索引擎优化的神灵将统治否则:-) – 2016-05-31 14:57:22

您可以在代码中使用debugger;为萤火虫创建断点。例如:

alert('1'); 
debugger; 
alert('2'); 

而萤火虫会自动停在这个关键字上。

+1

作品还在萤火虫控制台! – CoolEsh 2011-03-11 10:13:15

+0

是的,这很方便,但它不像我需要的那样具有编程性:例如,在任何任意函数开始时动态添加断点。 – nickf 2011-03-11 10:24:43

+0

添加它通过萤火虫。它真的是dinamically。大声笑 – CoolEsh 2011-03-11 10:31:59

看一看Firebug的功能调试(FN)& undebug(FN),它设置一个断点上命名的函数的第一行的名字。

看点6:

http://michaelsync.net/2007/09/30/firebug-tutorial-script-tab-javascript-debugging

+0

这可以从Javascript本身执行,还是只从萤火虫命令行?添加'debug(myFunctionName);'到我的代码会给我一个错误。 – nickf 2011-03-11 12:25:20

首先,你可以添加一个调用像__checkDebug()的函数;它将检查一个全局变量(或半全局变量),当所述变量为真时,调用调试器。


function __checkDebug() { 
    if (debugme) debugger; 
} 

所有的功能你担心调试会像这样:


function foo() { 
    __checkDebug(); 

    //.... whatever foo was gonna do. 
} 

然后,您可以把它远一点,动态地在代码正在像这样执行的装饰功能:


Function.prototype.debug = function(){ 
    var fn = this; 
    return function(){  
     if (debugme) debugger; 
     return fn.apply(this, arguments);  
    }; 
}; 

foo = foo.debug(); 

现在任何时候foo被调用,如果debugme变量是真的,它会调用调试器。

另一个选择是构建一个在每个函数声明后注入调用的JavaScript构建系统 - 这需要一个语法分析器,但是如果您只想修改函数,那么该用例的简单分词器很容易编写 - 但我会留给你的。