|
Java Debug Interface | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
public interface VirtualMachine
デバッグのターゲット仮想マシンです。厳密には、ターゲット VM の複合状態を示す mirror です。ほかのすべてのミラーは、このインタフェースのインスタンスと関連しています。ほかのすべてのミラーへのアクセスは、このインタフェースのインスタンスを介して、直接または間接的に行います。大域 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 |
canGetBytecodes()
ターゲット VM でメソッドのバイトコードの検索がサポートされているかどうかを判定します。 |
boolean |
canGetCurrentContendedMonitor()
ターゲット VM でスレッドが現在待機しているモニターの検索がサポートされているかどうかを判定します。 |
boolean |
canGetMonitorInfo()
ターゲット VM でオブジェクトのモニター情報の検索がサポートされているかどうかを判定します。 |
boolean |
canGetOwnedMonitorInfo()
ターゲット VM でスレッドが所有しているモニターの検索がサポートされているかどうかを判定します。 |
boolean |
canGetSourceDebugExtension()
ターゲット VM でソースデバッグ拡張機能の取得がサポートされているかどうかを判定します。 |
boolean |
canGetSyntheticAttribute()
ターゲット VM でメソッドまたはフィールドの合成属性の問い合わせがサポートされているかどうかを判定します。 |
boolean |
canPopFrames()
ターゲット VM でスレッドスタックからのフレームのポップがサポートされているかどうかを判定します。 |
boolean |
canRedefineClasses()
ターゲット VM で任意のレベルのクラス再定義がサポートされているかどうかを判定します。 |
boolean |
canRequestVMDeathEvent()
ターゲット VM で VMDeathRequest の作成がサポートされているかどうかを判定します。 |
boolean |
canUnrestrictedlyRedefineClasses()
ターゲット VM でクラス再定義の実行時に無制限に変更を加えることができるかどうかを判定します。 |
boolean |
canUseInstanceFilters()
ターゲット 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 のデフォルト層を返します。 |
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)
この仮想マシン内に文字列を作成します。 |
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 - ターゲット仮想マシンがこの操作をサポートしていない場合canRedefineClasses() が false の場合、このメソッドを呼び出すと、この例外がスローされるcanAddMethod() が false の場合、メソッドを追加しようとすると、この例外がスローされるcanUnrestrictedlyRedefineClasses() が false の場合、以下のどの場合にも、この例外がスローされるNoClassDefFoundError - バイトが参照型と対応していない (名前が一致していない) 場合
VerifyError - 「ベリファイア」が、正しい形式ではあるが、内部に整合性またはセキュリティに関する問題を含むクラスを検出した場合
ClassFormatError - バイトが有効なクラスを表現していない場合
ClassCircularityError - クラスの初期化中に循環が検出された場合
UnsupportedClassVersionError - バイト内のメジャーおよびマイナーのバージョン番号が VM によってサポートされていない場合
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、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 - 仮想マシンが読み取り専用の場合は、canBeModified() を参照void resume()
ThreadReference.resume() に記述されている方法で再開されます。
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、canBeModified() を参照suspend()List<ThreadGroupReference> topLevelThreadGroups()
ThreadGroupReference が含まれます。
このコマンドは、既存のスレッドグループの (1 つまたは複数の) ツリーを構築する最初の手順として使用できます。
ThreadGroupReference オブジェクトのリスト。各オブジェクトに、最上位の各スレッドグループが対応するEventQueue eventQueue()
EventQueue オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。
EventQueue
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、canBeModified() を参照EventRequestManager eventRequestManager()
EventRequestManager は、ブレークポイントなどのユーザが設定可能なイベントを制御します。仮想マシンは EventRequestManager オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。
EventRequestManager
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、canBeModified() を参照BooleanValue mirrorOf(boolean value)
BooleanValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する boolean 値
BooleanValueByteValue mirrorOf(byte value)
ByteValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する byte 値
ByteValueCharValue mirrorOf(char value)
CharValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する char 値
CharValueShortValue mirrorOf(short value)
ShortValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する short 値
ShortValueIntegerValue mirrorOf(int value)
IntegerValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する int 値
IntegerValueLongValue mirrorOf(long value)
LongValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する long 値
LongValueFloatValue mirrorOf(float value)
FloatValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する float 値
FloatValueDoubleValue mirrorOf(double value)
DoubleValue を作成します。この値を使用して、この仮想マシンの変数またはフィールドから取得した値の設定および比較を行うことができます。
value - 値を作成する double 値
DoubleValueStringReference mirrorOf(String value)
value - 作成する文字列
StringReference
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、canBeModified() を参照Process process()
LaunchingConnector で起動されている場合は、その Process オブジェクトを返します。
Process オブジェクト。LaunchingConnector で起動されていない場合は null
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、canBeModified() を参照void dispose()
suspend() または ThreadReference.suspend() によって中断されたすべてのスレッドを、実行に必要な回数だけ再開するObjectReference.disableCollection() によって無効になっている場合は、すべて有効にする
この仮想マシンに起因するリソース (ObjectReference、ReferenceType など) は、無効になります。
void exit(int exitCode)
ミラー化された VM 内で実行中のスレッドは、強制終了します。スレッド終了の例外はスローされず、finally ブロックも実行されません。
exitCode - ターゲット VM の終了コード。プラットフォームによっては、終了コードが下位 8 ビットなどに切り捨てられる場合があります。
VMCannotBeModifiedException - 仮想マシンが読み取り専用の場合は、canBeModified() を参照boolean canWatchFieldModification()
true、そうでない場合は falseboolean canWatchFieldAccess()
true、そうでない場合は falseboolean canGetBytecodes()
true、そうでない場合は falseboolean canGetSyntheticAttribute()
true、そうでない場合は falseboolean canGetOwnedMonitorInfo()
true、そうでない場合は falseboolean canGetCurrentContendedMonitor()
true、そうでない場合は falseboolean canGetMonitorInfo()
true、そうでない場合は falseboolean canUseInstanceFilters()
BreakpointRequest.addInstanceFilter(com.sun.jdi.ObjectReference) を参照してください。
true、そうでない場合は falseboolean canRedefineClasses()
true、そうでない場合は falseredefineClasses(java.util.Map extends com.sun.jdi.ReferenceType, byte[]>)boolean canAddMethod()
true、そうでない場合は falseredefineClasses(java.util.Map extends com.sun.jdi.ReferenceType, byte[]>)boolean canUnrestrictedlyRedefineClasses()
true、そうでない場合は falseredefineClasses(java.util.Map extends com.sun.jdi.ReferenceType, byte[]>)boolean canPopFrames()
true、そうでない場合は falseThreadReference.popFrames(com.sun.jdi.StackFrame)boolean canGetSourceDebugExtension()
true、そうでない場合は falseReferenceType.sourceDebugExtension()boolean canRequestVMDeathEvent()
VMDeathRequest の作成がサポートされているかどうかを判定します。
true、そうでない場合は falseEventRequestManager.createVMDeathRequest()boolean canBeModified()
VMCannotBeModifiedException がスローされます。
true、そうでない場合は falsevoid setDefaultStratum(String stratum)
Location を参照)。この設定は、クラスファイルで設定されたクラスごとのデフォルトよりも優先されます。
このメソッドは、Location.sourceName() などの位置問い合わせと、ステップ実行時に使用する行の境界線に影響を与えます。
stratum - VM のデフォルトとして設定する層。クラスごとのデフォルトを使用する場合は null
UnsupportedOperationException - ターゲット仮想マシンがこの操作をサポートしていない場合String getDefaultStratum()
setDefaultStratum(String) によってデフォルト層が設定されていない場合は null。この場合、クラスごとのデフォルト (ReferenceType.defaultStratum()) が使用されるsetDefaultStratum(String),
ReferenceType.defaultStratum()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 | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||