2011-08-04 16 views
8

Eclipseでは、「デバッグ」の下でプログラムを実行すると、コードを変更することができます。ほとんどの場合、すぐに有効になります。Eclipseデバッガでは、実行中のJVMにどのような変更を「ホットコード置き換え」できますか?

場合によっては、デバッグペインのスレッドの横にメッセージがポップアップ表示されるか、「同期していない可能性があります」と表示されることがあります。

ホットスワップできる変更の種類はどのように決まりますか?私はこれらの変更は、通常は失敗に気づいた:

クラスはtry-catchブロックを追加すること
  • をインスタンス化されるときに、クラス(フィールドやメソッドを追加/削除/名前の変更)を変え、新たな匿名内部クラス
  • を導入

    しかし、時にはほとんどランダムであるようです。コードを置き換えることができるかどうかを決定する背後にある論理は何ですか?

  • 答えて

    9

    メソッドステートメント(手続き型コード)が機能します。クラススキーマの追加、削除、または変更に関するすべてが機能しません。したがって継承、フィールドの抽出、メソッドの抽出、シグネチャの変更などはありません。

    通常、同時に禁止されているものを実行している場合、ホット・スワップ・メソッド・ステートメントは機能しません。その後、ホットスワップ接続は「壊れている」と言います。

    匿名のクラスは確実にわかりません。ホットスワップに関連してこれを試みたことはありません。

    編集:zeroturnaroundの人たちは、機能セクションで、jvmデバッガーが商品を宣伝するために何もできないものをリストにまとめました:http://www.zeroturnaround.com/jrebel/features/。あなたがツールを気に入っているかどうかにかかわらず、リストには私の経験が反映されています。

    +0

    +1 JRebelの場合、そのことを気に入ってください – Andy