(Java) プログラムのフロー全体をデバッグしたいです。プログラムをステップ実行するためのオプションがいくつかあるようです。ステップ インとステップ オーバーの違いは何ですか?
ベストアンサー1
の行によって呼び出され、の行にある現在の命令ポインタ ( で示される、次に実行される行->
)を持つ次のコードを考えてみます。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); //
f(1); // <----------------------------------- STEP OVER
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- STEP OUT OF
}
}
その時点でステップインすると、 のprintln()
行に移動しf()
、関数呼び出しにステップインします。
その時点でステップオーバーすると、関数呼び出しをステップオーバーして のf(1)
行に移動します。g()
デバッガーのもう 1 つの便利な機能は、 のステップアウトまたはステップリターンです。この場合、ステップ リターンは基本的に、現在の関数を 1 レベル上に戻るまで実行します。つまり、 と をステップ スルーしてからf(x)
、f(1)
呼び出し元の関数に戻り、 の に到達しg(3)
ますmain()
。