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