Javaプログラムのフロー全体をデバッグしたい。違いは何ですか F5 (ステップイン)および F6 (ステップオーバー)日食で?
f(x);
のg()
行でg(2)
行によって呼び出されたmain()
行で、現在の命令ポインター(次に実行される行)を含む次のコードを検討します。 :
public class testprog {
static void f (int x) {
System.out.println ("num is " + (x+0)); // <- step into
}
static void g (int x) {
-> f(x); // <----------------------------------- current location
f(1); // <----------------------------------- step over
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- step out of
}
}
その時点でintoにステップした場合、println()
のf()
行に移動し、関数呼び出しにステップインします。
その時点でoverをステップ実行した場合、f(1);
のg()
行に移動し、関数呼び出しをステップオーバーします。
デバッガーのもう1つの便利な機能は、ステップout ofまたはステップreturnです。その場合、1レベル上に戻るまで、ステップリターンは基本的に現在の関数を実行します。つまり、f(x)
とf(1)
をステップスルーし、呼び出し関数に戻ってg(3);
のmain()
に戻ります。
Eclipse(少なくともEuropa、これは現時点で唯一の便利なものです)を使用しています F5 step into
の場合、 F6 step over
および F7 step return
の場合。
コード行をデバッグする場合、通常のシナリオは次のとおりです。
Eclipseには他の高度なデバッグ機能がありますが、これらは基本的な基礎です。
ステップインは、メソッド呼び出しを掘り下げます
ステップオーバーすると、その行が実行されて次の行に移動します
ステップオーバーを使用してメソッドの詳細を確認することはできません。現在の行をスキップしたい場合は、ステップオーバーを使用できます。次に押す必要があるのは F6 一度だけ次の行に移動します。メソッド内に何か問題があると思われる場合は、 F5 詳細を調べます。
Step Into実行される現在選択されている行の次の式が呼び出され、呼び出されたメソッドの次の実行可能行で実行が一時停止します。
Step Over現在選択されている行が実行され、次の実行可能な行で一時停止します。