web-dev-qa-db-ja.com

Firebugのステップイン、ステップアウト、ステップオーバーとは何ですか?

私はFireBug Debuggerを初めて使用します

52
akila
  • ステップintoを指定すると、デバッガーは現在の行のすべてのメソッド呼び出しに移動します。複数のメソッド呼び出しがある場合、それらは実行順にアクセスされます。メソッド呼び出しがない場合、これはステップオーバーと同じです。これは、インタプリタからわかるように、実行の個々の行をたどるのとほぼ同じです。
  • ステップoverは、メソッドの呼び出しを途中で停止することなく、現在のスコープの次の行に進みます(つまり、次の行に進みます)。これは通常、コラボレーターの詳細を気にせずに特定のメソッドを介してロジックを追跡するために使用され、メソッドのどの時点で予想される条件に違反しているかを見つけるのに役立ちます。
  • ステップoutは、次の「リターン」または同等のものまで、つまり制御が前のスタックフレームに戻るまで続行します。これは一般に、thisポイント/メソッドで必要なすべてを見て、スタックをいくつかのレイヤーにバブルアップさせて、値は実際に使用されます。

main()から入力されたbarの最初の行にある次のコードを想像してください。

function main() {
   val s = foo();
   bar(s);
}

function foo() {
   return "hi";
}

function bar(s) {
   val t = s + foo(); // Debugger is currently here
   return t;
}

次に:

  • ステップインするとfoo呼び出しに進み、現在の行はfoo内のreturn "hi";行になります。
  • ステップオーバーは、別のメソッドが呼び出されているという事実を無視し、return t;行に進みます(これにより、tの評価対象をすばやく確認できます)。
  • ステップアウトにより、残りのbarメソッドの実行が終了し、制御がmainメソッドの最後の行に戻ります。
110
Andrzej Doyle
  • ステップインすると、デバッガーは次の関数呼び出しに進み、そこでブレークします。

  • ステップオーバーは、デバッガーに次の関数を実行し、後でブレークするように指示します。

  • ステップアウトは、デバッガーに現在の関数を終了し、その後に中断するように指示します。

14
SLaks

ショートバージョンは、step intoは、現在の行で呼び出されている関数の内部に移動します(1つが呼び出されていると想定)、step outは、あなたがstep into関数、およびstep overは次のコード行に移動します。例えば:

window.someFunction = function() {
    var x = 10;    //step over to move to the next line
                   //step out to return to the line after where 'someFunction()' was called
                   //step into not available
    var y = 20;
    return x * y;
};

//set breakpoint here
var x = 7;   //step over to execute this line and move to the 
             //next (step into and step out not available)
x += someFunction();  //step over to move to the next line
                      //step into to move to someFunction() (above)
                      //step out not available
alert(x);    //step over to display the alert
             //step out and (probably) step into not available
5
aroth
  • ステップイン->サブルーチンに入り、次のアクションを待つ
  • ステップオーバー->再度待機せずにサブルーチンを飛び越す
  • ステップアウト->サブルーチンにいる場合は、再度待機せずにそのままにします。
3
Billy Moon