-
public interface StackFrame extends Mirror, Locatable
スレッドの呼出しスタック上での、特定のメソッド呼出しの状態です。 スレッドの実行中にスタック・フレームのプッシュとポップが行われますが、この処理はメソッドが呼び出されてから復帰するまでに呼出しスタックから行われます。 StackFrameは、スレッドの実行時の特定の時点に、ターゲットVMのスタック・フレームをミラー化します。 つまり、呼出しスタックはStackFrameオブジェクトのListになります。 呼出しスタックは、スレッドが中断している間はThreadReference.frames()
を呼び出して取得できます。StackFrameを使用して、メソッドの局所変数およびその現在の値にアクセスすることができます。
StackFrameには寿命があります。 これは、スレッドが中断しているときにだけ使用でき、スレッドが再開されると無効になります。
ターゲットVMが切断されていて、
VMDisconnectEvent
がEventQueue
から読み出されたか読出せる場合は、StackFrame
をパラメータとして取るStackFrame
上のメソッドはVMDisconnectedException
をスローします。StackFrame
をパラメータとして取るStackFrame
上のメソッドは、ターゲットVMのメモリーが不足した場合にVMOutOfMemoryException
をスローします。- 導入されたバージョン:
- 1.3
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 List<Value>
getArgumentValues()
このフレーム内のすべての引数の値を返します。Value
getValue(LocalVariable variable)
このフレームのLocalVariable
のValue
を取得します。Map<LocalVariable,Value>
getValues(List<? extends LocalVariable> variables)
このフレーム内の複数の局所変数の値を返します。Location
location()
フレーム内の現在の命令のLocation
を返します。void
setValue(LocalVariable variable, Value value)
このフレームのLocalVariable
のValue
を設定します。ObjectReference
thisObject()
現在のフレームのthisの値を返します。ThreadReference
thread()
このフレームのメソッドが実行されているスレッドを返します。LocalVariable
visibleVariableByName(String name)
LocalVariable
のうち、指定された名前と一致し、現在のフレーム位置で可視なものを検索します。List<LocalVariable>
visibleVariables()
このフレームの位置からアクセスできる各LocalVariable
を含むリストを返します。-
インタフェース com.sun.jdi.Mirrorから継承されたメソッド
toString, virtualMachine
-
-
-
-
メソッドの詳細
-
location
Location location()
フレーム内の現在の命令のLocation
を返します。 このフレームを作成したメソッドには、返された位置からアクセスすることもできます。 スタック内の最上位のフレームでは、次に実行される命令の位置を返します。 その他のすべてのフレームでは、次のフレームのメソッドが呼出し元の命令の位置を返します。 フレームがnativeメソッドの呼出しを表す場合は、返される位置はクラスとメソッドを示していますが、コード・インデックスは無効(-1)です。- 定義:
location
、インタフェース:Locatable
- 戻り値:
- 現在の命令の
Location
。 - 例外:
InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。
-
thread
ThreadReference thread()
このフレームのメソッドが実行されているスレッドを返します。- 戻り値:
- フレームのスレッドをミラー化する
ThreadReference
。 - 例外:
InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。
-
thisObject
ObjectReference thisObject()
現在のフレームのthisの値を返します。 thisのObjectReference
は、非nativeのインスタンス・メソッドに対してだけ使用できます。- 戻り値:
ObjectReference
。フレームがnativeまたはstaticメソッドを表している場合はnull。- 例外:
InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。
-
visibleVariables
List<LocalVariable> visibleVariables() throws AbsentInformationException
このフレームの位置からアクセスできる各LocalVariable
を含むリストを返します。可視性は、このStackFrameの現在の命令のコード・インデックスによって決定されます。 各変数には、アクセスできるバイト・コード・インデックスの範囲が設定されています。 スタック・フレームのメソッドと変数のメソッドが一致し、StackFrameのコード・インデックスが変数のバイト・コードの範囲内に存在する場合は、この変数にアクセスすることができます。
変数のバイト・コードの範囲は、変数のスコープ以下ですが、次の特定の環境ではスコープを超えることもできます。
- コンパイラとVMがただちに変数のスロットを再利用しない。
- 上記の結果により拡張した範囲を報告するように、コンパイラとVMが実装されている。
- 戻り値:
- 現在アクセス可能な
LocalVariable
オブジェクトのリスト。可視変数がない場合は空のリスト。特に、nativeメソッド内のフレームは常に長さゼロのリストを返す。 - 例外:
AbsentInformationException
- このメソッドのローカル変数情報がない場合。InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。NativeMethodException
- 現在のメソッドがnativeの場合。
-
visibleVariableByName
LocalVariable visibleVariableByName(String name) throws AbsentInformationException
LocalVariable
のうち、指定された名前と一致し、現在のフレーム位置で可視なものを検索します。 可視性については、visibleVariables()
を参照してください。- パラメータ:
name
- 検索する変数名- 戻り値:
- 一致する
LocalVariable
。指定された名前の可視変数がない場合はnull。nativeメソッド内のフレームは常にnullを返す。 - 例外:
AbsentInformationException
- このメソッドのローカル変数情報がない場合。InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。NativeMethodException
- 現在のメソッドがnativeの場合。
-
getValue
Value getValue(LocalVariable variable)
このフレームのLocalVariable
のValue
を取得します。 このフレームのメソッドに対して有効で、visibleVariables()
に記述されている規則に基づく可視変数である必要があります。- パラメータ:
variable
- アクセスするLocalVariable
- 戻り値:
- インスタンス・フィールドの
Value
。 - 例外:
IllegalArgumentException
- 変数がこのフレームのメソッドに対して無効な場合、または可視変数でない場合。InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。
-
getValues
Map<LocalVariable,Value> getValues(List<? extends LocalVariable> variables)
このフレーム内の複数の局所変数の値を返します。 各変数が、このフレームのメソッドに対して有効で、visibleVariables()
に記述されている規則に基づく可視変数である必要があります。- パラメータ:
variables
- アクセスするLocalVariable
オブジェクトのリスト- 戻り値:
- 各
LocalVariable
とそのValue
を関連付けるマップ - 例外:
IllegalArgumentException
- 任意の変数がこのフレームのメソッドに対して無効な場合、または可視変数でない場合。InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。
-
setValue
void setValue(LocalVariable variable, Value value) throws InvalidTypeException, ClassNotLoadedException
このフレームのLocalVariable
のValue
を設定します。 このフレームのメソッドに対して有効で、visibleVariables()
に記述されている規則に基づく可視変数である必要があります。オブジェクトの値は、この変数の型への代入互換性を持たなければいけません(これは、この変数の型は、囲むクラスのクラス・ローダーによってロードする必要があることを意味する)。 プリミティブ値は、この変数の型への代入互換性を持たなければいけません。つまり、情報を失わずにこの変数の型に変換できる必要があります。 代入互換性の詳細は、JLSのセクション5.2を参照してください。
- パラメータ:
variable
- 要求された値を含むフィールドvalue
- 代入する新しい値- 例外:
IllegalArgumentException
- フィールドがこのオブジェクトのクラスにとって有効でない場合。InvalidTypeException
- 値の型が変数の型に一致しない場合。ClassNotLoadedException
- 変数の型が、適切なクラス・ローダーによってロードされていない場合。InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。VMCannotBeModifiedException
- VirtualMachineが読取り専用の場合(VirtualMachine.canBeModified()
を参照)。
-
getArgumentValues
List<Value> getArgumentValues()
このフレーム内のすべての引数の値を返します。 ローカル変数情報がない場合も、値が返されます。- 戻り値:
- このフレームの各引数の
Value
オブジェクトを含むリスト。引数は宣言された順に並べられる。 このフレームに対応するメソッドが引数を持たない場合、空のリストが返される。 - 例外:
InvalidStackFrameException
- このスタック・フレームが無効になっている場合。 フレームのスレッドが再開されると、スタック・フレームは無効になる。- 導入されたバージョン:
- 1.6
-
-