1

Scala メソッドの終了時にブレークポイントを設定することはできます}が、ヒットしないため意味がありません。

まだそこに置きたいです。それで、「その行の前に no-op を入れて、そこにブレークポイントを設定するのはどうだろう」と考えました。

しかし、ヒットすることのないブレークポイントを設定しようとしても (そこにはコードがないため) 明らかに Eclipse は警告を出さないので、ノーオペレーションが最適化されているかどうかを Eclipse が教えてくれることに頼ることはできません (特にEclipse Scala プラグインが使用しているのと同じバージョンの Scala を使用してコードを実行していないためです)。

したがって、ここで使用できる短い無操作ステートメントまたは式はありますか?これは、すべての状況で Scala コンパイラによって最適化されないことが保証されています。打たれた上で?このメソッドは ではなく有用な値を返すため、私の場合はステートメントではなく式でなければならないと思いますUnit

4

1 に答える 1

1

これは正確にはノーオペレーションではありませんが、ログ ステートメント (またはトレース式 - つまり、ログに記録したばかりの値を追加で返すログ ステートメント) は、最適化されて削除されないことが保証されています!

唯一の問題は、ブレークポイントに到達するたびにデバッグ ステートメントまたはトレース式を手動でステップ オーバーする必要があることです。変数の値を出力するだけでない限り、その場合は Eclipse の [変数] タブでその変数を見つけることができます。

そして、少なくとも私のコードでは、「古いスタイルのデバッグモード」で Eclipse Scala プラグイン 2.1 マイルストーン 2 を使用してトレース式をステップオーバーすることは、小さな問題ではありません。この問題により、完全に壊れているからです。

何が起こっているのかを理解する前に、F6キーと F7キーを 20 回ほど連打してから、やっと踏むことができました。そして、それは一度それをまたぐだけでした!

そして、次の行が であることを忘れないで}ください。したがって、次の行に別のブレークポイントを設定するという明らかな回避策は機能しません。

理論的には、トレースをステップオーバーしようとするのではなく、トレースされている値を検査できるはずです。残念ながら、それは私にとってもうまくいきません - クラスが見つからないと言っています。

于 2012-09-28T10:47:08.300 に答える