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

Posted

技术标签:

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

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

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

【问题讨论】:

Set a javascript breakpoint in code - in chrome? 的可能重复,如果只有标题包含关键字“代码”,否则 SEO 上帝会裁定:-) 【参考方案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

【讨论】:

这可以从 Javascript 本身执行,还是只能从 firebug 命令行执行?在我的代码中添加debug(myFunctionName); 会引发错误。 原网站不再活跃。 2018 年最新的 Wayback Machine 快照:web.archive.org/web/20180412190544/http://michaelsync.net/2007/…

以上是关于以编程方式控制 Javascript 中的断点?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Servlet 3.0 以编程方式控制登录

以编程方式运行查询并将其导出为 DataGrip 中的 CSV 文件

当某个条件为真时,如何在 Eclipse 中以编程方式设置 C++ 断点?

如何以编程方式单击 JavaScript 中的元素?

使用 Javascript 以编程方式取消标记 FB 照片

Javascript - 以与摆动路径在后效中的工作方式相同的方式以编程方式为形状设置动画