【问题标题】:Programmatically control breakpoints in Javascript?以编程方式控制 Javascript 中的断点?
【发布时间】:2011-07-13 09:21:19
【问题描述】:

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

我已经知道设置条件断点,但我对通过代码设置它们非常感兴趣。

【问题讨论】:

标签: javascript debugging breakpoints


【解决方案1】:

首先,您可以添加对函数的调用,例如 __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 构建系统,在每个函数声明之后注入调用 - 这需要一个语法解析器,但如果您只是想修改函数,则该用例的简单标记器很容易编写 -但我会留给你。

【讨论】:

    【解决方案2】:

    您可以在代码中使用debugger; 为firebug 设置断点。例如:

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

    并且 firebug 会自动停止在这个关键字上。

    【讨论】:

    • 也可以在萤火虫控制台中使用!
    • 是的,这很方便,但它并不像我需要的那样程序化:例如,在任意函数的开头动态添加断点。
    【解决方案3】:

    查看 FireBug 函数 debug(fn) 和 undebug(fn) 名称,它们在命名函数的第一行设置断点。

    参见第 6 点:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2013-02-08
    相关资源
    最近更新 更多