行が実行された後、命令ポインタが呼び出し元の関数に戻る前に、メソッドの戻り値を確認することはできますか?
変更できないコードをデバッグしています(読み取り:サードパーティのライブラリを再コンパイルしたくない)、時にはコードにジャンプしますソースがない、またはreturn式に副作用があるため、Displayタブで式を実行することができません。
多くの場合、複合ステートメントで戻り値が使用されるため、Variablesビューには値が表示されません(したがって、制御が戻る前に結果を確認したい)呼び出し関数に)。
PDATE:ステートメントに副作用があるため、式ビューアを使用できません。
この機能は Eclipse bug 40912 でEclipseバージョン4.7 M2に追加されました。
使用するには:
return
ステートメントをステップオーバーします(「Step Over」または「Step Return」を使用)これに対する本当に良いショートカットを見つけました。値を返す式を選択して押します
Ctrl + Shift + D
これにより、returnステートメントの値が表示されます。これは、デバッグ目的だけで変更できない、または変更したくない場合に非常に役立ちます。
お役に立てれば。
注:サードパーティのライブラリでこれをテストしていませんが、私のコードでは正常に機能しています。これをテストしましたEclipse Java EE IDE Web開発者向け。バージョン:Juno Service Release 1
そのため、私は常にメソッドについて次のパターンに固執しています:
MyReturnedType foo() {
MyReturnedType result = null;
// do your stuff, modify the result or not
return result;
}
私のルール:
当然、最も些細なゲッターは免除されます。
これは実際にはEclipseの長年のバグであり、IDEの最初の日からさかのぼります。 https://bugs.Eclipse.org/bugs/show_bug.cgi?id=40912
この質問に対する答えも知りたいと思っています。
過去に、そのようなサードパーティライブラリを扱うとき、私がしたことは、親クラスに委任するラッパークラスまたは子クラスを作成し、ラッパー/子クラスでデバッグを行うことでした。ただし、余分な作業が必要です。
「メソッドから戻ると、上部のメソッドの変数ビューに、以前に終了した呼び出しの戻り値が表示されます」[1]
これは少し難解ですが、簡単な方法はないようです。
AspectJを使用して、興味のあるメソッドの戻り値を保持するアスペクトをJARに装備できます。Eclipseのドキュメントによると、AspectJプログラムは他のプログラムと同様に debugged にできます。
ライブラリを再コンパイルせずにクラスを作成するには、2つのオプションがあります。
バイナリJARの処理が許容できる場合は、コンパイル後のウィービング。
ロード時間ウィービング。VMでウィービングエージェントをアクティブ化する必要があります。
Eclipseのドキュメント(上記のリンク)と AspectJ開発環境ガイド も参照してください。
難しいもの。 Eclipse以外での私の経験では、戻り値を確認する必要がある場合は、関数のローカル変数に割り当てて、returnステートメントがreturn(some * expression || other);
ではなく単純なreturn varname;
になるようにするのが最善です。 。ただし、コードを変更したり、再コンパイルしたりすることはできない(またはしたくない)と言うので、それはあなたにとって恐ろしくは役に立ちません。したがって、良い答えはありません。おそらく、要件を再検討する必要があります。
Returnステートメントに応じて、返される式を強調表示し、右クリックメニューから「式の評価」のようなものがあるはずです(今は私の前にEclipseがありませんが、それはそのようなものです) )。返される内容が表示されます。