2016-07-08 2 views
2

intellij-ideaJava開発用です。ほとんどのIDEには、評価式という2つのオプションがあります。は、ステートメントを実行し、デバッグ時に結果を表示します。Evaluate-ExpressionとIntellijを比較したときのステートメントの実行の違いは?

これらの2つのステートメントの実行の違いは何ですか?つまり、2つのオプションが提供される理由は何ですか?

答えて

1

主な違いは時計は何度も評価されますが、評価式は手動でのみ評価されます。

object.incrementX()があるとします。

これをウォッチ式として設定し、デバッグの通常のプロセス(プログラムの実行、ブレークポイント、ステップ、ステップなどでの停止)を実行すると、xの値が何度も増分された。

Wheresは、式を評価すると、実行時の制御権を持ちます。

式がの状態に変更された場合は、それをウォッチ式に入れることに注意する必要があります。そうしないと、予測できない結果になることがあります。

+0

あなたの例では、incrementX()は増分後のxの値を返します。 –

+0

はい、可能ですが、voidを返す場合でも、式を評価して状態を変更することができます。 – vikingsteve

0

式評価機能とは異なり、ウォッチの式はプロジェクトの一部として保持されます。ワッチ式は、常にフレームペインで現在検査されているスタックフレームのコンテキストで評価されます。

一方、式評価は「単一レベル」にしかなりません。式評価内で呼び出されたメソッドが本体内にブレークポイントを持つ場合、このブレークポイントは無視されます。

Evaluate-Expressionとwatchの重要な違いの1つは、Evaluate Expressionを使用している間にパラメータを変更または変更できること(メソッドの場合)、またはそのために他の論理計算を追加できることです。したがって、ウォッチ機能とともに、必要に応じてさまざまなサンプルケースをテストすることで、コードをデバッグすることができます。

関連する問題