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

时间:2011-03-11 10:00:57

标签: javascript debugging breakpoints

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

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

3 个答案:

答案 0 :(得分:29)

首先,您可以添加对__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变量是真的,它将调用debugger。

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

答案 1 :(得分:24)

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

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

firebug会自动停止此关键字。

答案 2 :(得分:1)

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

见第6点:

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