インタフェースStackFrame
ThreadReference.frames()を呼び出して取得できます。
StackFrameを使用して、メソッドの局所変数およびその現在の値にアクセスすることができます。
StackFrameには寿命があります。 これは、スレッドが中断しているときに け使用でき、スレッドが再開されると無効になります。
ターゲットVMが切断されていて、VMDisconnectEventがEventQueueから読み出されたか読出せる 合は、StackFrameをパラメータとして取るStackFrame上のメソッドはVMDisconnectedExceptionをスローします。
StackFrameをパラメータとして取るStackFrame上のメソッドは、ターゲットVMのメモリーが不足した 合にVMOutOfMemoryExceptionをスローします。
- 導入されたバージョン:
- 1.3
-
メソッドのサマリー
修飾子と型メソッド説明このフレー 内のすべての引数の値を返します。getValue(LocalVariable variable) このフレー のLocalVariableのValueを取得します。getValues(List<? extends LocalVariable> variables) このフレー 内の複数の局所変数の値を返します。location()フレー 内の現在の命令のLocationを返します。voidsetValue(LocalVariable variable, Value value) このフレー のLocalVariableのValueを設定します。現在のフレー のthisの値を返します。thread()このフレー のメソッドが実行されているスレッドを返します。visibleVariableByName(String name) LocalVariableのうち、指定された名前と一致し、現在のフレー 位置で可視なものを検索します。このフレー の位置からアクセスできる各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のうち、指定された名前と一致し、現在のフレー 位置で可視なものを検索します。 可視性については、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()に記述されている規則に基づく可視変数である必要があります。仮想スレッドの 合、ターゲットVMでは、このフレー が最上位フレー でイベントでスレッドが一時停止されている 合に、ローカル変数の値の設定がサポートされます。 その他の 合、ターゲットVMはローカル変数の設定をサポートすることがあります。
オブジェクトの値は、この変数の型への代入互換性を持たなければいけません(これは、この変数の型は、囲むクラスのクラス・ローダーによってロードする必要があることを意味する)。 プリミティブ値は、この変数の型への代入互換性を持たなければいけません。つまり、情 を失わずにこの変数の型に変換できる必要があります。 代入互換性の詳細は、JLSのセクション5.2を参照してく さい。
- パラメータ:
variable- 要求された値を含むフィールドvalue- 代入する新しい値- スロー:
IllegalArgumentException- フィールドがこのオブジェクトのクラスにとって有効でない 合。InvalidTypeException- 値の型が変数の型に一致しない 合。ClassNotLoadedException- 変数の型が、適切なクラス・ローダーによってロードされていない 合。InvalidStackFrameException- このスタック・フレー が無効になっている 合。 フレー のスレッドが再開されると、スタック・フレー は無効になる。OpaqueFrameException- このフレー が中断された仮想スレッドの呼び出しスタック上にあり、ターゲットVMがこのフレー 内のローカル変数の値の設定をサポートしていない 合。VMCannotBeModifiedException- VirtualMachineが読取り専用の 合。- 関連 目:
-
getArgumentValues
このフレー 内のすべての引数の値を返します。 ローカル変数情 がない 合も、値が返されます。- 戻り値:
- このフレー の各引数の
Valueオブジェクトを含むリスト。引数は宣言された に並べられる。 このフレー に対応するメソッドが引数を持たない 合、空のリストが返される。 - スロー:
InvalidStackFrameException- このスタック・フレー が無効になっている 合。 フレー のスレッドが再開されると、スタック・フレー は無効になる。- 導入されたバージョン:
- 1.6
-