1

私はJavaが初めてで、Eclipseでデバッグすることを学んでいます。デバッガーが初めて関数にステップ インできず、2 回目は正常にステップ インできるという奇妙なエラーが発生します。具体的には、ここに私の手順があります。

  1. 目的の関数に到達するまでステップ オーバーして調べます。
  2. 関数にステップ インします。これは、「ソースが見つかりません」というエラーが発生したときです。
  3. ステップリターン。デバッガーは、上記の前のスタック フレームに正常に戻ります。
  4. もう一度関数にステップ インします。不思議なことに、今度は作品に足を踏み入れます。

何がおかしいのでしょうか?目的の関数を調べるのに 2 回の「ステップ イン」が必要なのはなぜですか?

4

2 に答える 2

1

これは、1 行に 2 つのステートメントがあり、内側のステートメントにソースがない (必要最小限の JRE など) 場合に発生する可能性があります。

myObject.myMethod(someObject.toString());

この行では、最初のステップ インで内部オブジェクトの toString() メソッドにステップ インし (利用可能なソースがない可能性があります)、2 番目のステップで独自のメソッドにステップ インします (そのためのコードがあります)。 .

これを解決する方法 (通常の Java ランタイム クラスで発生している場合) は、プロジェクトに JRE ではなく完全な JDKを使用し、適切なコーディング プラクティスに従い、内部ステートメントを変数に移動して、各行が正確に 1 つの処理を行うようにすることです。 (オプティマイザは、これを行うことでパフォーマンスが低下しないようにする必要があります)。

于 2012-05-15T16:18:56.313 に答える
1

次のような行がある場合:

func1(obj.func2());

サードパーティのソースまたは Java src であり、jre を使用している場合、デバッガーは最初に obj.func2() にステップ インします。このソース コードを見逃す可能性があり、Eclipse はデバッグ用のソースをアタッチできません (Maven を使用してください! =))。

次の「ステップイン」では、func1 に到達します

于 2012-05-15T16:19:32.203 に答える