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

问题描述 投票:0回答:6

如何告诉 Firefox 在看到

debugger
关键字时不要停止?

我需要避免连续的

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);
});

javascript debugging firefox firebug firefox-developer-tools
6个回答
26
投票

从 Firefox 121 开始,调试器停止时的设置有多种选择。

在开发人员工具的调试器部分中,有一个带有工具提示“停用断点”的图标。启用后,它会在任何情况下禁用停止。

为了进行微调,或者只是为了防止在

debugger
语句处停止,请禁用“停用断点”图标(划叉),然后禁用“断点”选项下的相关选项(因为它默认启用) .


4
投票

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

在 Firebug 中调试

Firebug 允许在

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

此外,Firebug 没有选项可以忽略所有

debugger
语句。

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

注意:由于Firebug 开发已停止

,因此对其提出增强请求是没有用的。

在 Firefox DevTools 中调试

不幸的是,Firefox DevTools 目前不允许避免在

debugger

语句上停止。因此,您必须等到 bug 1300934(其中提到了同一网站作为示例)、

bug 925269
和/或 issue 828 得到修复。 此外,无法完全禁用 Debugger 面板,该面板被归档为

bug 1247198

如果您使用

Greasemonkey

3
投票
setTimeout/setInterval

函数来禁用脚本 unsafeWindow.setTimeout = function () {};

    


3
投票

另一种选择是使用“永不在此暂停”

火狐 对于 Firefox,您可以

blackbox

您不想被断点击中的脚本。对我来说,它会导致 Firefox 挂起。但是当你重新启动浏览器时。那么就没事了

我按照

此博客

1
投票
中创建

工作流程,以自动构建可规避 JavaScript 反调试调试器机制的 Firefox 浏览器。 它的工作原理如下:

demo

如果您想停止调试而不丢失断点,那么您需要

0
投票
断点,而不仅仅是

停用。单击断点列表的正上方,然后选择“禁用断点”。这样,即使您刷新页面,所有断点仍然处于禁用状态。在 Ubuntu 上使用 Firefox 101.0.1 进行了测试。

© www.soinside.com 2019 - 2024. All rights reserved.