web-dev-qa-db-ja.com

Firefox-「デバッガ」キーワードを無効にする

Firefoxにdebuggerキーワードが表示された場合に停止しないように指示するにはどうすればよいですか?

ウェブサイトがデバッグ保護を使用してタイマーを使用してオンザフライでdebuggerステートメントを生成する場合に備えて、継続的なdebuggerループを回避する必要があります。

これが例です。デバッグコンソールを開くと、スクリプトは大量のデバッガステートメントをスローし、通常のデバッグ作業をブロックします。

ウェブサイトの例は http://www.avito.r -ロシアで最大の求人サイトです。それを開いてからデバッガコンソールを開くと、生成されたスクリプトの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);
});
11
user201202

この回答を書いているFirefoxの現在のバージョン(バージョン63.0.3)の[開発者ツール]の[デバッガー]セクションには、[一時停止をすべてスキップ]または[ブレークポイントを無効にする]というツールチップが付いたアイコンがあります。有効にすると、debugger命令での停止が無効になるようです。

Skip all pausing FireFox 63.0.3Deactivae Breakpoints on FireFox 71.0b9

5
Sam Sirry

明らかに、このページは、人々がその構造を使用してJavaScriptコードをデバッグすることを回避しようとしています。

Firebugでのデバッグ

Firebugdebuggerステートメントに無効なブレークポイントを設定できます。このページは可変の呼び出しスタック深度を生成するため、JavaScriptを適切にデバッグできるように、すべての無効なブレークポイントを設定する必要があります。残念ながら、Firebugは、これらのブレークポイントを設定することになるとバグがあるようです。

さらに、Firebugにはすべてのdebuggerステートメントを無視するオプションがありません。

したがって、JavaScriptをデバッグする必要がなく、HTML、CSS、ネットワークリクエストなどのみをデバッグする必要がある場合は、スクリプトパネルを無効にするだけで、これらの煩わしいデバッガーの停止を回避できます。これを行うには、スクリプトタブを右クリックし、オープニングメニュー内の有効をクリックします。

Disable Firebug's *Script* panel

注: Firebugの開発は中止されています であるため、拡張リクエストを提出することは無意味です。

Firefox DevToolsでのデバッグ

残念ながら、 Firefox DevTools は現在、debuggerステートメントでの停止を回避することを許可していません。したがって、 バグ1300934 (例として同じWebサイトに言及)、 バグ925269 および/または 問題828 が修正されるまで待つ必要があります。

さらに、Debuggerパネルを完全に無効にする方法はありません。これは bug 1247198 として提出されます。

3

Greasemonkeyを使用する場合は、setTimeout/setInterval関数を書き換えてスクリプトを無効にすることができます

unsafeWindow.setTimeout = function () {};
3
uingtea

in chromeブレークポイントを編集して、常にfalseの条件を設定すると、デバッガーにヒットしなくなります。

enter image description here

もう1つのオプションは、「ここで一時停止しない」を使用することです。

enter image description here

firefoxの場合、ブレークポイントにヒットしたくないスクリプトを blackbox できます。私にとっては、Firefoxがハングアップします。しかし、ブラウザを再起動すると。それなら大丈夫です enter image description here

0
Mo Hrad A