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

nic*_*ckf 28 javascript debugging breakpoints

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

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

Mar*_*ope 29

首先,您可以添加对__checkDebug()等函数的调用; 这将检查全局(或半全局)变量,当所述变量为真时,调用调试器.

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

Run Code Online (Sandbox Code Playgroud)

你关心调试的所有函数都是这样的:

  
function foo() {
   __checkDebug();

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

Run Code Online (Sandbox Code Playgroud)

然后,您可以进一步采用它并在执行代码时动态修饰函数,如下所示:


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

foo = foo.debug();  

Run Code Online (Sandbox Code Playgroud)

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

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


Coo*_*Esh 24

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

alert('1');
debugger;
alert('2');
Run Code Online (Sandbox Code Playgroud)

并且firebug会自动停止此关键字.