1. ホーム
  2. java

[解決済み] Intellijでデバッグ中にリターンする前に戻り値を知ることはできますか?

2022-04-26 23:49:17

質問

で。

Object method(){
    ...
    return /* some complex expression */
}

デバッグ中にどのような値が返されるかを確認する方法はありますか?例えば、returnの直後で、呼び出し側のコードに実行が移る前にヒットするブレークポイントを設定するとか? 私は戻り値が何であるかを知ることができ、またすべてのローカル変数の値が何であるかを見ることができるようにしたいと思います。

今のやり方は、テンポラリ変数を作っています。 Object ret = /* something complex */; return ret; . しかし、それは面倒なことで、さらに不必要な行が追加されます。

注:これは、以下の質問と同じです。 Visual Studioでデバッグ中に、戻る前に戻り値を見つけることはできますか? ただし、intellijの場合。

どのように解決するのですか?

これには2つの方法があるようです。 最初の方法は、メソッドのシグネチャにブレークポイントを設定するもので、あなたの場合、Object method(){ にブレークポイントを設定します。 これにより、メソッドの入口と出口を監視することができます。 これは、"と併用する必要があると思います。 メソッドの戻り値を見る" しかし、計算に時間がかかりすぎるため、完全にはテストできていません。デバッガーのパフォーマンスが劇的に低下し、デバッグに時間がかかるので注意してください。

また、手動で以下のようにすることもできます。

  1. 戻り線にブレークポイントを設定します。
  2. 戻り線がヒットしたら、戻り線をクリックし、具体的には見たい操作の上にカーソルを置いて、Run->Evaluate Expression(またはAlt-F8)を実行すると、その時点で式を実行し、返しているものを返してくれるはずです。

備考 : ブレークポイントを作成すると、ブレークポイントでブレークした場合、式を実行し、それをログに残すように指示できるなど、IDEAに指示できることがたくさんあります。 ブレークポイント上で右クリックしてプロパティをクリックすると、できることをいろいろと見ることができます。

アップデイト : 最初の方法と合わせて試してみてください。 メソッドの戻り値を見る" は、デバッグセッションを遅くしたり、フリーズさせたりするようなので、使わないでください。 代わりに次のようにしてください。

  1. 表示したい戻り値の式を右クリックし、"Add to Watches"をクリックします。
  2. 次に、上記のようにメソッドブレークポイントを追加します。
  3. プログラムをデバッグすると、メソッドがメソッドシグネチャでブレークします。
  4. F9キーを押して続行すると、再びブレークするはずです。 の場合、return expression は計算され、watch 列に表示されるはずです。

メソッドブレークポイントは低速であるため、より多くの時間がかかる可能性があることを覚えておいてください。パフォーマンスへの影響が大きすぎると感じる場合にこれを改善するトリッキーな方法は、return文ブレークポイントを(メソッドブレークポイントを持たずに)設定し、次にメソッドブレークポイントを追加する方法です。 を実行した後、return文のブレークポイントがヒットして続行します。

お役に立てれば幸いです。