Firefox - 禁用“调试器”关键字

时间:2016-09-29 09:27:59

标签: javascript debugging firefox firebug firefox-developer-tools

如果Firefox看到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);
});

4 个答案:

答案 0 :(得分:3)

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

在Firebug中调试

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

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

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

Disable Firebug's *Script* panel

注意:由于Firebug development is discontinued,提交增强请求无效。

在Firefox DevTools中调试

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

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

答案 1 :(得分:3)

如果你使用 Greasemonkey ,你可以重写setTimeout/setInterval函数来禁用脚本

unsafeWindow.setTimeout = function () {};

答案 2 :(得分:3)

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

enter image description here

答案 3 :(得分:1)

在chrome中,您可以编辑断点并设置一个始终为false的条件,它将不再对调试器起作用

enter image description here

另一种选择是使用“从不在这里暂停”

enter image description here

对于Firefox,您可以blackbox不想被断点击中的脚本。对我来说,它导致挂Firefox。但是当您重新启动浏览器时。那没关系 enter image description here