デバッグ中にPopFrame機能を使用すると、前の実行ポイントに戻ることができます。 PopFrameをHotSwapとともに使用すると、再開時に新しいクラス定義を使用できます。 PopFrameは、Java 2 SDK v1.4のJava Platform Debugger Architecture(JPDA)の拡張機能で、JDeveloperのJava Virtual Machine(OJVM)に実装されています。
デバッガの一時停止中に、スタックからフレームを戻してクラスを再定義できます。 コードがホットスワップされた後にデバッガが再開すると、古いメソッド定義を現在実行しているスレッドは、そのメソッドが戻るまで実行を続行します。 後続のメソッド・コールでは、新しい定義が使用されます。 古いメソッドのフレームを戻すことによって、スレッドで新しいクラス定義が使用されます。 ただし、前の実行による副次的効果は元に戻らず、クラスの既存のインスタンスは変更されません。さらに、クラス変数もリセットされません。 クラス・メソッドのロジックを変更するには、HotSwapを使用してください。 フィールドやメソッドの追加または削除など大幅な変更を行う場合は、ほとんどの場合、HotSwapは使用できません。
実行スタック内のフレームは、メソッドを起動します。 PopFrameを使用すると、ネイティブ・メソッドのコールではなく、ネイティブ・メソッドのコールにも先行していないフレームから実行を再開できます。 PopFrameはメソッドを再起動しますが、そのメソッドに渡された引数は再評価しません。 引数を再評価するには、スタック内のさらに深い階層のフレームに戻る必要があります。
HotSwapの使用後に実行スタックからフレームを戻すには、次のようにします。
ブレークポイントを設定し、実行がそのブレークポイントに達するまで待機して、デバッガを停止します。
ナビゲータ・ウィンドウの「スタック」ペインに、実行スタックの現在の状態が表示されます。
変更するクラスのソース・コードを編集します。
次の手順でクラスを再コンパイルします。 「実行」->「メイク<クラス名>」を選択します。
デバッガのログ・ウィンドウに、再定義が正常に終了したかどうかを示すメッセージが表示されます。
実行スタック内の項目を右クリックし、「ここに戻る」を選択します。
コード表示が変更されて、新しい実行ポイントが示されます。
デバッガのツールバーで をクリックして、実行を再開します。
新しいクラス定義を使用して実行が再開されます。
Copyright © 1997, 2004, Oracle. All rights reserved.