デバッグ時のクラスの再定義

デバッグ中にHotSwap機能を使用すると、アプリケーションを停止したり再起動せずに、エラーを修正し、修正されたクラス定義を置き換えることができます。 HotSwapは、Java 2 SDK v1.4のJava Platform Debugger Architecture(JPDA)の拡張機能で、JDeveloperのJava Virtual Machine(OJVM)に実装されています。

デバッガの一時停止中に、クラスを再コンパイルできます。 コードがホットスワップされた後にデバッガが再開すると、古いメソッド定義を現在実行しているスレッドは、そのメソッドが戻るまで実行を続行します。 後続のメソッド・コールでは、クラス定義が使用されます。 ただし、クラスの既存のインスタンスは変更されず、クラス変数もリセットされません。 クラス・メソッドのロジックを変更するには、HotSwapを使用してください。 フィールドやメソッドの追加または削除など大幅な変更を行う場合は、ほとんどの場合、HotSwapは使用できません。

デバッグ中にクラスを再定義するには、次のようにします。

  1. クラスのソース・コードを編集します。

  2. 次の手順でクラスを再コンパイルします。 メイン・メニューから「実行」->「メイク<クラス名>」を選択するか、コード・エディタでクラスを右クリックして「メイク」を選択します。

    デバッガのログ・ウィンドウに、再定義が正常に終了したかどうかを示すメッセージが表示されます。

  3. デバッガのツールバーで resume_icon をクリックして、実行を再開します。

    古いメソッド定義を現在実行しているスレッドは、そのメソッドが戻るまで実行を続行します。 後続のメソッド・コールでは、新しいクラス定義を使用して実行が再開されます。


Javaプログラムのデバッグ
実行スタックからフレームを戻す

 

Copyright © 1997, 2004, Oracle. All rights reserved.