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