Firefox - 禁用"调试器"关键字

use*_*202 11 javascript debugging firefox firebug firefox-developer-tools

如果它看到debugger关键字,我怎么告诉Firefox不要停止?

debugger如果网站debugger使用定时器动态使用调试保护生成语句,我需要避免连续循环.

这是一个例子.如果您打开调试控制台,脚本将抛出大量的调试器语句,这将阻止您进行正常的调试工作.

一个示例网站是http://www.avito.ru--俄罗斯最大的分类网站.打开它,然后打开调试器控制台,它将立即停止debugger在生成的脚本中的关键字.

(function(x/**/) {
    (function(f){
        (function a(){
            try {
                function b(i) {
                    if(
                        (''+(i/i)).length !== 1 ||
                        i % 20 === 0
                    ) {
                        (function(){}).constructor('debugger')();
                    } else {
                        debugger;
                    }

                    b(++i);
                }

                b(0);
            } catch(e) {
                f.setTimeout(a, x)
            }
        })()
    })(document.body.appendChild(document.createElement('frame')).contentWindow);
});
Run Code Online (Sandbox Code Playgroud)

Sam*_*rry 11

在编写此答案时的当前版本的 Firefox 中(版本 63.0.3),在开发者工具的调试器部分,有一个带有工具提示“跳过所有暂停”或“停用断点”的图标。启用后,它似乎禁止在任何debugger指令处停止。

跳过所有暂停 FireFox 63.0.3 FireFox 71.0b9 上的停用断点

  • 这对我不起作用,调试器仍然停止在“调试器”上。 (7认同)
  • 这就是现代界面糟糕的原因。在过去,这将是“调试”顶级菜单中的菜单项。 (3认同)

Seb*_*ner 4

显然,该页面试图避免人们使用该构造调试 JavaScript 代码。

在 Firebug 中调试

Firebug允许在语句上设置禁用断点debugger。由于该页面生成可变的调用堆栈深度,因此您需要为所有这些断点设置这些禁用的断点,以便能够正确调试 JavaScript。不幸的是,Firebug 在设置这些断点时似乎有问题。

此外,Firebug 没有忽略所有debugger语句的选项。

因此,如果您不需要调试 JavaScript,而只需要调试 HTML、CSS、网络请求等,则只需禁用脚本面板即可避免这些烦人的调试器停止。为此,右键单击“脚本”选项卡,然后单击打开菜单中的“启用” 。

禁用 Firebug 的 *Script* 面板

注意:由于Firebug 开发已停止,因此提交增强请求是没有用的。

在 Firefox DevTools 中进行调试

不幸的是,Firefox DevTools目前不允许避免停止debugger语句。因此,您必须等到bug 1300934(以同一网站为例)、bug 925269和/或问题 828得到修复。

此外,无法完全禁用调试器面板,该面板被归档为bug 1247198