1. ホーム
  2. デバッギング

[解決済み】デバッガでステップインツーとステップオーバーの違いは何ですか?

2022-04-03 13:58:10

質問

(Java)プログラムのフロー全体をデバッグしたい。以下のようなオプションがあるようですが ステッピング を実行します。とはどのような違いがあるのでしょうか? ステップイン 踏み越える ?

解決方法は?

次のコードを考え、現在の命令ポインタ(次に実行される行、で示される。 -> にある。 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つ上の階層に戻るまで、現在の関数を実行することになります。言い換えれば、この関数は f(x)f(1) で終了し、呼び出し元の関数に戻り、最後に g(3)main() .