質問

行が実行された後、命令ポインタが呼び出し元の関数に戻る前に、メソッドの戻り値を確認することは可能ですか?

変更できないコードをデバッグしています<読み取り>:サードパーティのライブラリを再コンパイルしたくない、そして時々ソースがないコードにジャンプしたり、リターン式には副作用があり、表示タブで式を実行することができなくなります。

多くの場合、戻り値は複合ステートメントで使用されるため、 Variables ビューには値が表示されません(したがって、制御が呼び出し関数に戻る前に結果を確認する必要があります)。

更新:ステートメントに副作用があるため、式ビューアを使用できません。

他のヒント

このための非常に良いショートカットが見つかりました。 値を返す式を選択して

を押します
Ctrl + Shift + D

これにより、returnステートメントの値が表示されます。これは、デバッグ目的だけで変更できない、または変更したくない場合に非常に役立ちます。

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

注:サードパーティのライブラリでこれをテストしていませんが、私のコードでは正常に機能しています。 これをWeb開発者向けのEclipse Java EE IDEでテストしました。バージョン:Juno Service Release 1

これは実際にはEclipseの長年のバグで、IDEの最初の日からさかのぼります: https://bugs.eclipse.org/bugs/show_bug.cgi?id=40912

だからこそ、私は常にメソッドについて次のパターンに固執しています:

MyReturnedType foo() {
     MyReturnedType   result = null;

     // do your stuff, modify the result or not

     return result;
}

私のルール:

  1. 1つのreturnステートメントのみ、メソッドの最後にのみ(最終的に許可されます)
  2. 常に、デフォルトから開始して、戻り値を保持するローカルの呼び出された結果があります。

当然、最も些細なゲッターは免除されます。

この質問に対する答えも知りたいと思っています。

過去、そのようなサードパーティのライブラリを扱うとき、私がしたことは、親クラスに委任するラッパークラスまたは子クラスを作成し、ラッパー/子クラスでデバッグを行うことでした。ただし、余分な作業が必要です。

&quot;メソッドから戻ると、上部のメソッドの変数ビューに、以前に終了した呼び出しの戻り値が表示されます&quot; [1]

[1] https:/ /coffeeorientedprogramming.wordpress.com/2016/09/23/eclipse-see-return-value-during-debugging/

タフな方。 Eclipse以外での私の経験では、戻り値を確認する必要がある場合は、関数のローカル変数に割り当ててreturnステートメントが単純な return varname; になるようにするのが最善です return(some * expression || other); ではありません。ただし、コードを変更したり、再コンパイルしたりすることはできない(またはしたくない)と言うので、これはあまり役に立ちません。そのため、良い答えがありません。おそらく要件を再検討する必要があります。

returnステートメントに応じて、返される式を強調表示し、右クリックメニューから「式の評価」のようなものが表示されるはずです。 (私の前では日食はありませんが、それはそのようなものです)。返される内容が表示されます。

これは少し手間がかかりますが、簡単な方法ではないようです:

AspectJを使用して、興味のあるメソッドの戻り値を保持するアスペクトをJARに装備できます。Eclipseのドキュメントによると、AspectJプログラムは他のプログラムと同様にデバッグ

ライブラリを再コンパイルせずにクラスを編成するには、次の2つのオプションがあります。

  • バイナリJARの処理が許容される場合、コンパイル後のウィービング;

  • ロード時間ウィービング。VMでウィービングエージェントをアクティブにする必要があります。

Eclipseのドキュメント(上記のリンク)および AspectJ開発も参照してください。環境ガイド

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top