|
Java Debug Interface | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface VirtualMachine
デバッグのターゲット仮想マシンです。厳密には、ターゲット VM の複合状態を示すミラー
です。ほかのすべてのミラーは、このインタフェースのインスタンスと関連しています。ほかのすべてのミラーへのアクセスは、このインタフェースのインスタンスを介して、直接または間接的に行います。大域 VM プロパティーへのアクセスおよび VM の実行の制御は、このインタフェースから直接行います。
このインタフェースのインスタンスは、Connector
のインスタンスによって作成されます。たとえば、AttachingConnector
は、ターゲット VM に接続し、その仮想マシンのミラーを返します。コネクタは、通常、VirtualMachineManager の VirtualMachineManager.createVirtualMachine(Connection)
createVirtualMachine(Connection) メソッドを呼び出して、仮想マシンを作成します。
起動コネクタにより起動されたターゲット VM は、VMStartEvent
が受け入れられるまで安定であることを保証されていません。
ターゲット VM が切断された場合、VirtualMachine
を引数に取る VirtualMachine
上の任意のメソッドは、VMDisconnectedException
をスローし、VMDisconnectEvent
が EventQueue
から読み出せるようになります。
VirtualMachine
を引数に取る VirtualMachine
上の任意のメソッドは、ターゲット VM のメモリーが不足すると VMOutOfMemoryException
をスローします。
フィールドの概要 | |
---|---|
static int |
TRACE_ALL
すべてのトレースが有効になります。 |
static int |
TRACE_EVENTS
内部イベント処理のトレースが有効になります。 |
static int |
TRACE_NONE
すべてのトレースが無効になります。 |
static int |
TRACE_OBJREFS
オブジェクト参照の内部管理のトレースが有効になります。 |
static int |
TRACE_RECEIVES
ターゲット VM から受信される JDWP パケットのトレースが有効になります。 |
static int |
TRACE_REFTYPES
参照型の内部管理のトレースが有効になります。 |
static int |
TRACE_SENDS
ターゲット VM に送信される JDWP パケットのトレースが有効になります。 |
メソッドの概要 | |
---|---|
List<ReferenceType> |
allClasses()
ロード済みのすべての型を返します。 |
List<ThreadReference> |
allThreads()
現在実行中のスレッドのリストを返します。 |
boolean |
canAddMethod()
ターゲット VM でクラス再定義の実行時にメソッドを追加できるかどうかを判定します。 |
boolean |
canBeModified()
ターゲット VM が読み取り専用 VM であるかどうかを判定します。 |
boolean |
canForceEarlyReturn()
ターゲット VM でメソッドの強制的な早期復帰がサポートされているかどうかを判定します。 |
boolean |
canGetBytecodes()
ターゲット VM でメソッドのバイトコードの検索がサポートされているかどうかを判定します。 |
boolean |
canGetClassFileVersion()
ターゲット VM で、クラスファイルのメジャーバージョン番号とマイナーバージョン番号の読み取りがサポートされているかどうかを判定します。 |
boolean |
canGetConstantPool()
ターゲット VM で、クラスの定数プール情報の取得がサポートされているかどうかを判定します。 |
boolean |
canGetCurrentContendedMonitor()
ターゲット VM でスレッドが現在待機しているモニターの検索がサポートされているかどうかを判定します。 |
boolean |
canGetInstanceInfo()
ターゲット VM で、クラスインスタンス、インスタンス数、および参照オブジェクトのアクセスがサポートされているかどうかを判定します。 |
boolean |
canGetMethodReturnValues()
ターゲット VM で、 MethodExitEvent に戻り値を含める機能がサポートされているかどうかを判定します。 |
boolean |
canGetMonitorFrameInfo()
ターゲット VM で、モニター獲得フレームの情報の取得がサポートされているかどうかを判定します。 |
boolean |
canGetMonitorInfo()
ターゲット VM でオブジェクトのモニター情報の検索がサポートされているかどうかを判定します。 |
boolean |
canGetOwnedMonitorInfo()
ターゲット VM でスレッドが所有しているモニターの検索がサポートされているかどうかを判定します。 |
boolean |
canGetSourceDebugExtension()
ターゲット VM でソースデバッグ拡張機能の取得がサポートされているかどうかを判定します。 |
boolean |
canGetSyntheticAttribute()
ターゲット VM でメソッドまたはフィールドの合成属性の問い合わせがサポートされているかどうかを判定します。 |
boolean |
canPopFrames()
ターゲット VM でスレッドスタックからのフレームのポップがサポートされているかどうかを判定します。 |
boolean |
canRedefineClasses()
ターゲット VM で任意のレベルのクラス再定義がサポートされているかどうかを判定します。 |
boolean |
canRequestMonitorEvents()
ターゲット VM で、 MonitorContendedEnterRequest 、MonitorContendedEnteredRequest 、MonitorWaitRequest 、MonitorWaitedRequest の生成がサポートされているかどうかを判定します。 |
boolean |
canRequestVMDeathEvent()
ターゲット VM で VMDeathRequest の作成がサポートされているかどうかを判定します。 |
boolean |
canUnrestrictedlyRedefineClasses()
ターゲット VM でクラス再定義の実行時に無制限に変更を加えることができるかどうかを判定します。 |
boolean |
canUseInstanceFilters()
ターゲット VM で特定のインタスタンスオブジェクトによるイベントのフィルタ処理がサポートされているかどうかを判定します。 |
boolean |
canUseSourceNameFilters()
ターゲット VM で、ソース名によるクラス準備イベントのフィルタがサポートされているかどうかを判定します。 |
boolean |
canWatchFieldAccess()
ターゲット VM でフィールドアクセスのウォッチポイントがサポートされているかどうかを判定します。 |
boolean |
canWatchFieldModification()
ターゲット VM でフィールド変更のウォッチポイントがサポートされているかどうかを判定します。 |
List<ReferenceType> |
classesByName(String className)
指定された名前に一致するロード済みの参照型を返します。 |
String |
description()
ターゲット VM 、およびターゲット VM をミラー化するデバッガのサポートについてのテキスト情報を返します。 |
void |
dispose()
この仮想マシンのミラーを無効にします。 |
EventQueue |
eventQueue()
この仮想マシンのイベントキューを返します。 |
EventRequestManager |
eventRequestManager()
この仮想マシンのイベント要求マネージャーを返します。 |
void |
exit(int exitCode)
ミラー化された VM が、特定のエラーコードで終了します。 |
String |
getDefaultStratum()
VM のデフォルト層を返します。 |
long[] |
instanceCounts(List<? extends ReferenceType> refTypes)
refTypes リスト内の各 ReferenceType のインスタンス数を返します。 |
BooleanValue |
mirrorOf(boolean value)
指定された値に対応する BooleanValue を生成します。 |
ByteValue |
mirrorOf(byte value)
指定された値に対応する ByteValue を生成します。 |
CharValue |
mirrorOf(char value)
指定された値に対応する CharValue を生成します。 |
DoubleValue |
mirrorOf(double value)
指定された値に対応する DoubleValue を生成します。 |
FloatValue |
mirrorOf(float value)
指定された値に対応する FloatValue を生成します。 |
IntegerValue |
mirrorOf(int value)
指定された値に対応する IntegerValue を生成します。 |
LongValue |
mirrorOf(long value)
指定された値に対応する LongValue を生成します。 |
ShortValue |
mirrorOf(short value)
指定された値に対応する ShortValue を生成します。 |
StringReference |
mirrorOf(String value)
この仮想マシン内に文字列を作成します。 |
VoidValue |
mirrorOfVoid()
VoidValue を作成します。 |
String |
name()
ターゲット VM の名前をプロパティー java.vm.name に指定されている方法で返します。 |
Process |
process()
この仮想マシンが LaunchingConnector で起動されている場合は、その Process オブジェクトを返します。 |
void |
redefineClasses(Map<? extends ReferenceType,byte[]> classToBytes)
指定されたクラスはすべて、提供される定義に従って再定義されます。 |
void |
resume()
この仮想マシンで動作中のアプリケーションの実行を再開します。 |
void |
setDebugTraceMode(int traceFlags)
com.sun.jdi 実装によって実行される動作をトレースします。 |
void |
setDefaultStratum(String stratum)
この VM のデフォルト層を設定します (層については Location を参照)。 |
void |
suspend()
この仮想マシンで実行中のアプリケーションの実行を中断します。 |
List<ThreadGroupReference> |
topLevelThreadGroups()
親を持たない各スレッドグループを返します。 |
String |
version()
ターゲット VM 内の Java Runtime Environment のバージョンを、 java.version プロパティーに指定されている方法で返します。 |
インタフェース com.sun.jdi.Mirror から継承されたメソッド |
---|
toString, virtualMachine |
フィールドの詳細 |
---|
static final int TRACE_NONE
static final int TRACE_SENDS
static final int TRACE_RECEIVES
static final int TRACE_EVENTS
static final int TRACE_REFTYPES
static final int TRACE_OBJREFS
static final int TRACE_ALL
メソッドの詳細 |
---|
List<ReferenceType> classesByName(String className)
ReferenceType
が含まれます。ロード済みのクラス以外は検索されません。 指定された名前のクラスはロードされません。
返されるリストには、準備の段階でロード済みの参照型、および準備が定義されていない型 (配列など) が含まれます。
className
- 検索するクラスとインタフェースの名前
ReferenceType
オブジェクトのリスト。List<ReferenceType> allClasses()
ReferenceType
が出力されます。このリストには、クラス、インタフェース、および配列の型をミラー化する ReferenceType が含まれます。
返されるリストには、準備の段階でロード済みの参照型、および準備が定義されていない型 (配列など) が含まれます。
ReferenceType
オブジェクトのリスト。void redefineClasses(Map<? extends ReferenceType,byte[]> classToBytes)
Method.isObsolete()
は true を返します。このスタックフレームを再設定する必要がある場合は、ThreadReference.popFrames(StackFrame)
を使用して、スタックから旧バージョンの廃止されたメソッド実行をポップします。再定義されたメソッドを新しく呼び出すと、常に新しいバージョンが呼び出されます。
この関数により、一般的な JVM セマンティクスのもとで行われる以外の初期化は起こりません。つまり、クラスを再定義しても、そのクラスの初期化は実行されません。既存のスタティック変数は、呼び出し前の状態のままです。ただし、まったく初期化されていない (新しい) スタティック変数には、デフォルト値が割り当てられます。
再定義したクラスにインスタンスがある場合、そのインスタンスのフィールドは呼び出し完了時に再定義したクラスで定義されます。既存のフィールドは以前の値を保持します。新しいフィールドはデフォルト値となります。インスタンスイニシャライザやコンストラクタは実行しません。
スレッドを中断する必要はありません。
この関数によって生成されるイベントはありません。
再定義されたクラス内のブレークポイントはすべて削除されます。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、canRedefineClasses()
を使用してください。再定義によってメソッドを追加できるかどうかを確認するには、canAddMethod()
を使用してください。再定義によってスキーマの変更、メソッドの削除、クラス階層の変更などが可能かどうかを確認するには、canUnrestrictedlyRedefineClasses()
を使用してください。
classToBytes
- ReferenceType
からバイト配列へのマップ。バイトは、新しいクラス定義を示す。また、Java 仮想マシンのクラスファイル形式である。
UnsupportedOperationException
- ターゲット Virtual Machine がこの操作をサポートしていない場合。
canRedefineClasses()
が false の場合にこのメソッドを呼び出すと、この例外がスローされる。
canAddMethod()
が false の場合にメソッドを追加しようとすると、この例外がスローされる。
canUnrestrictedlyRedefineClasses()
が false の場合に次のいずれかの操作を試行すると、この例外がスローされる。
NoClassDefFoundError
- バイトが参照型と対応していない (名前が一致していない) 場合。
VerifyError
- 「ベリファイア」が、正しい形式ではあるが、内部に整合性またはセキュリティーに関する問題を含むクラスを検出した場合。
ClassFormatError
- バイトが有効なクラスを表現していない場合。
ClassCircularityError
- クラスの初期化中に循環が検出された場合。
UnsupportedClassVersionError
- バイト内のメジャーバージョン番号とマイナーバージョン番号が VM によってサポートされていない場合。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。Method.isObsolete()
,
ThreadReference.popFrames(com.sun.jdi.StackFrame)
,
canRedefineClasses()
,
canAddMethod()
,
canUnrestrictedlyRedefineClasses()
List<ThreadReference> allThreads()
ThreadReference
が出力されます。返されるリストには、java.lang.Thread で作成されたスレッド、JNI を介してターゲット VM に接続されたすべてのネイティブスレッド、およびターゲット VM により作成されたシステムスレッドが含まれます。開始していないスレッドオブジェクト (Thread.start()
を参照)、および実行が完了したスレッドオブジェクトは、返されるリスト内に含まれません。
ThreadReference
オブジェクトのリスト。各オブジェクトに、VM 内で実行されているスレッドが対応する。void suspend()
Thread.suspend()
とは異なり、仮想マシンと個々のスレッド両方の中断がカウントされます。スレッドを再実行する前に、resume()
または ThreadReference.resume()
を使って、中断された回数と同じ回数だけ再開してください。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。void resume()
ThreadReference.resume()
に記述されている方法で再開されます。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。suspend()
List<ThreadGroupReference> topLevelThreadGroups()
ThreadGroupReference
が出力されます。
このコマンドは、既存のスレッドグループの (1 つまたは複数の) ツリーを構築する最初の手順として使用できます。
ThreadGroupReference
オブジェクトのリスト。各オブジェクトに、トップレベルの各スレッドグループが対応する。EventQueue eventQueue()
EventQueue
オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。
EventQueue
。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。EventRequestManager eventRequestManager()
EventRequestManager
は、ブレークポイントなどのユーザーが設定可能なイベントを制御します。仮想マシンは EventRequestManager
オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。
EventRequestManager
。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。BooleanValue mirrorOf(boolean value)
BooleanValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する boolean 値
BooleanValue
。ByteValue mirrorOf(byte value)
ByteValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する byte 値
ByteValue
。CharValue mirrorOf(char value)
CharValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する char 値
CharValue
。ShortValue mirrorOf(short value)
ShortValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する short 値
ShortValue
。IntegerValue mirrorOf(int value)
IntegerValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する int 値
IntegerValue
。LongValue mirrorOf(long value)
LongValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する long 値
LongValue
。FloatValue mirrorOf(float value)
FloatValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する float 値
FloatValue
。DoubleValue mirrorOf(double value)
DoubleValue
を生成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する double 値
DoubleValue
。StringReference mirrorOf(String value)
value
- 作成する文字列
StringReference
。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。VoidValue mirrorOfVoid()
VoidValue
を作成します。void メソッドを終了するとき、この値を ThreadReference.forceEarlyReturn(com.sun.jdi.Value)
に渡すことができます。
VoidValue
。Process process()
LaunchingConnector
で起動されている場合は、その Process
オブジェクトを返します。
Process
オブジェクト。この仮想マシンが LaunchingConnector
で起動されていない場合は null。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。void dispose()
suspend()
または ThreadReference.suspend()
で中断されたすべてのスレッドを、実行に必要な回数だけ再開します。
ObjectReference.disableCollection()
によって無効になっている場合は、すべて有効にします。
この仮想マシンを起源とするリソース (オブジェクト参照や参照型など) は、無効になります。
void exit(int exitCode)
ミラー化された VM 内で実行中のスレッドは、強制終了します。スレッド終了例外はスローされないため、finally ブロックは実行されません。
exitCode
- ターゲット VM の終了コード。プラットフォームによっては、終了コードが下位 8 ビットなどに切り詰められる場合があります。
VMCannotBeModifiedException
- VirtualMachine が読み取り専用の場合 (canBeModified()
を参照)。boolean canWatchFieldModification()
true
、それ以外の場合は false
。boolean canWatchFieldAccess()
true
、それ以外の場合は false
。boolean canGetBytecodes()
true
、それ以外の場合は false
。boolean canGetSyntheticAttribute()
true
、それ以外の場合は false
。boolean canGetOwnedMonitorInfo()
true
、それ以外の場合は false
。boolean canGetCurrentContendedMonitor()
true
、それ以外の場合は false
。boolean canGetMonitorInfo()
true
、それ以外の場合は false
。boolean canUseInstanceFilters()
BreakpointRequest.addInstanceFilter(com.sun.jdi.ObjectReference)
を参照してください。
true
、それ以外の場合は false
。boolean canRedefineClasses()
true
、それ以外の場合は false
。redefineClasses(java.util.Map extends com.sun.jdi.ReferenceType, byte[]>)
boolean canAddMethod()
true
、それ以外の場合は false
。redefineClasses(java.util.Map extends com.sun.jdi.ReferenceType, byte[]>)
boolean canUnrestrictedlyRedefineClasses()
true
、それ以外の場合は false
。redefineClasses(java.util.Map extends com.sun.jdi.ReferenceType, byte[]>)
boolean canPopFrames()
true
、それ以外の場合は false
。ThreadReference.popFrames(com.sun.jdi.StackFrame)
boolean canGetSourceDebugExtension()
true
、それ以外の場合は false
。ReferenceType.sourceDebugExtension()
boolean canRequestVMDeathEvent()
VMDeathRequest
の作成がサポートされているかどうかを判定します。
true
、それ以外の場合は false
。EventRequestManager.createVMDeathRequest()
boolean canGetMethodReturnValues()
MethodExitEvent
に戻り値を含める機能がサポートされているかどうかを判定します。
true
、それ以外の場合は false
。EventRequestManager.createMethodExitRequest()
boolean canGetInstanceInfo()
true
、それ以外の場合は false
。instanceCounts(java.util.List extends com.sun.jdi.ReferenceType>)
,
ReferenceType.instances(long)
,
ObjectReference.referringObjects(long)
boolean canUseSourceNameFilters()
ClassPrepareRequest.addSourceNameFilter(java.lang.String)
を参照してください。
true
、それ以外の場合は false
。boolean canForceEarlyReturn()
true
、それ以外の場合は false
。ThreadReference.forceEarlyReturn(Value)
boolean canBeModified()
VMCannotBeModifiedException
がスローされます。
true
、それ以外の場合は false
。boolean canRequestMonitorEvents()
MonitorContendedEnterRequest
、MonitorContendedEnteredRequest
、MonitorWaitRequest
、MonitorWaitedRequest
の生成がサポートされているかどうかを判定します。
true
、それ以外の場合は false
。EventRequestManager.createMonitorContendedEnterRequest()
,
EventRequestManager.createMonitorContendedEnteredRequest()
,
EventRequestManager.createMonitorWaitRequest()
,
EventRequestManager.createMonitorWaitedRequest()
boolean canGetMonitorFrameInfo()
true
、それ以外の場合は false
。ThreadReference.ownedMonitorsAndFrames()
boolean canGetClassFileVersion()
true
、それ以外の場合は false
。ReferenceType.majorVersion()
,
ReferenceType.minorVersion()
boolean canGetConstantPool()
true
、それ以外の場合は false
。ReferenceType.constantPoolCount()
,
ReferenceType.constantPool()
void setDefaultStratum(String stratum)
Location
を参照)。この設定は、クラスファイルで設定されたクラスごとのデフォルトよりも優先されます。
このメソッドは、Location.sourceName()
などの位置問い合わせと、ステップ実行時に使用する行の境界線に影響を与えます。
stratum
- VM のデフォルトとして設定する層。クラスごとのデフォルトを使用する場合は null。
UnsupportedOperationException
- ターゲット Virtual Machine がこの操作をサポートしていない場合。String getDefaultStratum()
setDefaultStratum(String)
によってデフォルト層が設定されていない場合は null
。この場合、クラスごとのデフォルト (ReferenceType.defaultStratum()
) が使用される。setDefaultStratum(String)
,
ReferenceType.defaultStratum()
long[] instanceCounts(List<? extends ReferenceType> refTypes)
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、canGetInstanceInfo()
を使用します。
refTypes
- カウントを取得する ReferenceType
オブジェクトのリスト。
long
の配列。配列要素 i には、refTypes リスト内の位置 i にある ReferenceType のターゲット VM 内のインスタンス数が含まれます。refTypes リストが空リストの場合、長さゼロの配列が返されます。refTypes リスト内の ReferenceType がガベージコレクトされている場合、インスタンス数としてゼロが返されます。
UnsupportedOperationException
- ターゲット仮想マシンでこの操作がサポートされていない場合。canGetInstanceInfo()
を参照
NullPointerException
- refTypes リストが null の場合。ReferenceType.instances(long)
,
ObjectReference.referringObjects(long)
String description()
version()
、VirtualMachineManager.majorInterfaceVersion()
、および VirtualMachineManager.minorInterfaceVersion()
を使って取得できます。
String version()
java.version
プロパティーに指定されている方法で返します。JDI インタフェースのバージョンを取得するには、VirtualMachineManager.majorInterfaceVersion
および VirtualMachineManager.minorInterfaceVersion
を使用します。
String name()
java.vm.name
に指定されている方法で返します。
void setDebugTraceMode(int traceFlags)
出力は実装によって異なります。トレースモードが無視される場合もあります。
traceFlags
- 有効にするトレースの種類を特定する
|
Java Debug Interface | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |