web-dev-qa-db-ja.com

Javascriptでブレークポイントをプログラムで制御しますか?

どのブラウザでも、任意のプラグインを使用して、プログラムでコードのブレークポイントを有効または無効にすることは可能ですか?

条件付きブレークポイントの設定についてはすでに知っていますが、コードを介して設定することに本当に興味があります。

29
nickf

まず、__ checkDebug();のような関数への呼び出しを追加できます。これはグローバル(またはセミグローバル)変数をチェックし、その変数がtrueの場合、デバッガーを呼び出します。

  
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変数がtrueの場合にデバッガーが呼び出されます。

別のオプションは、すべての関数宣言の後に呼び出しを挿入するjavascriptビルドシステムを構築することです-これには構文パーサーが必要ですが、関数を変更するだけの場合は、そのユースケースの単純なトークナイザーを書くのは非常に簡単です-しかし私はそれはあなたに任せます。

29
Marcus Pope

コードでdebugger;を使用して、Firebugのブレークポイントを作成できます。例えば:

alert('1');
debugger;
alert('2');

そして、firebugはこのキーワードで自動的に停止します。

24
CoolEsh

FireBug関数を見てくださいdebug(fn)&undebug( fn)名前付き関数の最初の行にブレークポイントを設定する名前。

ポイント#6を参照してください。

http://michaelsync.net/2007/09/30/firebug-tutorial-script-tab-javascript-debugging

1
Tramov