|
Java Debug Interface | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
デバッグのターゲット Virtual Machine です。厳密には、ターゲット VM の複合状態を示す mirror
です。ほかのすべてのミラーは、このインタフェースのインスタンスと関連しています。ほかのすべてのミラーへのアクセスは、このインタフェースのインスタンスを介して、直接または間接的に行います。大域 VM プロパティへのアクセスおよび VM の実行の制御は、このインタフェースから直接行います。
このインタフェースのインスタンスは、Connector
のインスタンスによって作成されます。
ターゲット 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 |
allClasses()
ロード済みのすべての型を返します。 |
List |
allThreads()
現在実行中のスレッドのリストを返します。 |
boolean |
canAddMethod()
ターゲット 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 |
classesByName(String className)
指定された名前に一致するロード済みの参照型を返します。 |
String |
description()
ターゲット VM 、およびターゲット VM をミラー化するデバッガのサポートについてのテキスト情報を返します。 |
void |
dispose()
この Virtual Machine のミラーを無効にします。 |
EventQueue |
eventQueue()
この Virtual Machine のイベントキューを返します。 |
EventRequestManager |
eventRequestManager()
この Virtual Machine のイベント要求マネージャを返します。 |
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)
この Virtual Machine 内に文字列を作成します。 |
String |
name()
ターゲット VM の名前をプロパティ java.vm.name に指定されている方法で返します。 |
Process |
process()
この Virtual Machine が LaunchingConnector で起動されている場合は、その Process オブジェクトを返します。 |
void |
redefineClasses(Map classToBytes)
用意された定義に従って、すべてのクラスが再定義されます。 |
void |
resume()
この Virtual Machine で動作中のアプリケーションの実行を再開します。 |
void |
setDebugTraceMode(int traceFlags)
com.sun.jdi 実装によって実行される動作をトレースします。 |
void |
setDefaultStratum(String stratum)
この VM のデフォルト層を設定します (層については Location を参照)。 |
void |
suspend()
この Virtual Machine で実行中のアプリケーションの実行を中断します。 |
List |
topLevelThreadGroups()
親を持たない各スレッドグループを返します。 |
String |
version()
ターゲット VM 内の Java Runtime Environment のバージョンを、 java.version プロパティに指定されている方法で返します。 |
インタフェース com.sun.jdi.Mirror から継承したメソッド |
toString, virtualMachine |
フィールドの詳細 |
public static final int TRACE_NONE
public static final int TRACE_SENDS
public static final int TRACE_RECEIVES
public static final int TRACE_EVENTS
public static final int TRACE_REFTYPES
public static final int TRACE_OBJREFS
public static final int TRACE_ALL
メソッドの詳細 |
public List classesByName(String className)
ReferenceType
が含まれます。ロード済みのクラス以外は検索されません。指定された名前のクラスはロードされません。
返されるリストには、準備の段階でロード済みの参照型、および準備が定義されていない型 (配列など) が含まれます。
className
- 検索するクラスとインタフェースの名前
ReferenceType
オブジェクトのリストpublic List allClasses()
ReferenceType
が出力されます。このリストには、クラス、インタフェース、および配列の型をミラー化する ReferenceType が含まれます。
返されるリストには、準備の段階でロード済みの参照型、および準備が定義されていない型 (配列など) が含まれます。
ReferenceType
オブジェクトのリストpublic void redefineClasses(Map classToBytes)
ThreadReference.popFrames(StackFrame)
と Method.isObsolete()
を組み合わせて使用してください。
この関数では、JVM 意味論 の下で通常発生する初期化以外は、初期化は発生しません。つまり、クラスを再定義しても、そのクラスの初期化子が実行されることはありません。すでに存在する静的変数の値は、呼び出しの前と同じ状態に保たれます。ただし、まったく初期化されない (新規の) 静的変数には、デフォルトの値が割り当てられます。
再定義されたクラスにインスタンスが存在する場合、それらのすべてのインスタンスには、再定義されたクラスによって呼び出しの完了時に定義されるフィールドが存在します。すでに存在するフィールドは、前の値を維持します。新しいフィールドはデフォルトの値になります。インスタンス初期化子またはコンストラクタは実行されません。
スレッドを中断する必要はありません。
この関数によって生成されるイベントはありません。
この操作は、ターゲット Virtual Machine でサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、canRedefineClasses()
を使用してください。再定義によってメソッドを追加できるかどうかを確認するには、canAddMethod()
を使用してください。再定義によってスキーマの変更、メソッドの削除、クラス階層の変更などが可能かどうかを確認するには、canUnrestrictedlyRedefineClasses()
を使用してください。
classToBytes
- ReferenceType
からバイト配列へのマップ。バイトは、新しいクラス定義を示す。また、Java Virtual Machine のクラスファイル形式である
UnsupportedOperationException
- ターゲット仮想マシンがこの操作をサポートしない場合canRedefineClasses()
が false の場合、このメソッドを呼び出すと、この例外がスローされるcanAddMethod()
が false の場合、メソッドを追加しようとすると、この例外がスローされるcanUnrestrictedlyRedefineClasses()
が false の場合、以下のどの場合にも、この例外がスローされるNoClassDefFoundError
- バイトが参照型と対応していない (名前が一致していない) 場合
VerifyError
- 「ベリファイア」が、正しい形式ではあるが、内部に整合性またはセキュリティに関する問題を含むクラスを検出した場合
ClassFormatError
- バイトが有効なクラスを表現していない場合
ClassCircularityError
- クラスの初期化中に循環が検出された場合
UnsupportedClassVersionError
- バイト内のメジャーおよびマイナーのバージョン番号が VM によってサポートされていない場合Method.isObsolete()
,
ThreadReference.popFrames(com.sun.jdi.StackFrame)
,
canRedefineClasses()
,
canAddMethod()
,
canUnrestrictedlyRedefineClasses()
public List allThreads()
ThreadReference
が出力されます。返されるリストには、java.lang.Thread によって作成されたスレッド、JNI によってターゲット VM に接続されたすべてのネイティブスレッド、およびターゲット VM によって作成されたシステムスレッドが含まれます。開始していないスレッドオブジェクト (Thread.start()
を参照)、および実行が完了したスレッドオブジェクトは、返されるリスト内に含まれません。
ThreadReference
オブジェクトのリスト。各オブジェクトに、VM 内で実行されているスレッドが対応するpublic void suspend()
Thread.suspend()
と異なり、Virtual Machine の中断と各スレッドの中断はどちらもカウントされます。スレッドは、再実行される前に、(resume()
または ThreadReference.resume()
によって) 中断された回数と同じ回数だけ再開する必要があります。
public void resume()
ThreadReference.resume()
に記述されている方法で再開されます。
suspend()
public List topLevelThreadGroups()
ThreadGroupReference
が含まれます。
このコマンドは、既存のスレッドグループのツリー (1 つまたは複数) を構築するときに、最初に使用します。
ThreadGroupReference
オブジェクトのリスト。各オブジェクトに、最上位の各スレッドグループが対応するpublic EventQueue eventQueue()
EventQueue
オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。
EventQueue
public EventRequestManager eventRequestManager()
EventRequestManager
は、ブレークポイントなどのユーザが設定可能なイベントを制御します。Virtual Machine は EventRequestManager
オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。
EventRequestManager
public BooleanValue mirrorOf(boolean value)
BooleanValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する boolean 値
BooleanValue
public ByteValue mirrorOf(byte value)
ByteValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する byte 値
ByteValue
public CharValue mirrorOf(char value)
CharValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する char 値
CharValue
public ShortValue mirrorOf(short value)
ShortValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する short 値
ShortValue
public IntegerValue mirrorOf(int value)
IntegerValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する int 値
IntegerValue
public LongValue mirrorOf(long value)
LongValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する long 値
LongValue
public FloatValue mirrorOf(float value)
FloatValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する float 値
FloatValue
public DoubleValue mirrorOf(double value)
DoubleValue
を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。
value
- 値を作成する double 値
DoubleValue
public StringReference mirrorOf(String value)
StringReference
public Process process()
LaunchingConnector
で起動されている場合は、その Process
オブジェクトを返します。
Process
オブジェクト。LaunchingConnector
で起動されていない場合は nullpublic void dispose()
suspend()
または ThreadReference.suspend()
によって中断されたすべてのスレッドを、実行に必要な回数だけ再開する
ObjectReference.disableCollection()
によって無効になっている場合は、すべて有効にする
この VirtualMachine に起因するリソース (ObjectReference、ReferenceType など) は、無効になります。
public void exit(int exitCode)
ミラー化された VM 内で実行中のスレッドは、強制終了します。スレッド終了の例外はスローされず、finally ブロックも実行されません。
exitCode
- ターゲット VM の終了コードpublic boolean canWatchFieldModification()
true
、それ以外の場合は false
public boolean canWatchFieldAccess()
true
、それ以外の場合は false
public boolean canGetBytecodes()
true
、それ以外の場合は false
public boolean canGetSyntheticAttribute()
true
、それ以外の場合は false
public boolean canGetOwnedMonitorInfo()
true
、それ以外の場合は false
public boolean canGetCurrentContendedMonitor()
true
、それ以外の場合は false
public boolean canGetMonitorInfo()
true
、それ以外の場合は false
public boolean canUseInstanceFilters()
BreakpointRequest.addInstanceFilter(com.sun.jdi.ObjectReference)
を参照してください。
true
、それ以外の場合は false
public boolean canRedefineClasses()
true
、それ以外の場合は false
redefineClasses(java.util.Map)
public boolean canAddMethod()
true
、それ以外の場合は false
redefineClasses(java.util.Map)
public boolean canUnrestrictedlyRedefineClasses()
true
、それ以外の場合は false
redefineClasses(java.util.Map)
public boolean canPopFrames()
true
、それ以外の場合は false
ThreadReference.popFrames(com.sun.jdi.StackFrame)
public boolean canGetSourceDebugExtension()
true
、それ以外の場合は false
ReferenceType.sourceDebugExtension()
public boolean canRequestVMDeathEvent()
VMDeathRequest
の作成がサポートされているかどうかを判定します。
true
、それ以外の場合は false
EventRequestManager.createVMDeathRequest()
public void setDefaultStratum(String stratum)
Location
を参照)。この設定は、クラスファイルで設定されたクラスごとのデフォルトよりも優先されます。
このメソッドは、Location.sourceName()
などの位置問い合わせと、ステップ実行時に使用する行の境界線に影響を与えます。
stratum
- VM のデフォルトとして設定する層。クラスごとのデフォルトを使用する場合は null
UnsupportedOperationException
- ターゲット Virtual Machine がこの操作をサポートしていない場合public String getDefaultStratum()
setDefaultStratum(String)
によってデフォルト層が設定されていない場合は null
。この場合、クラスごとのデフォルト (ReferenceType.defaultStratum()
) が使用されるsetDefaultStratum(String)
,
ReferenceType.defaultStratum()
public String description()
version()
、VirtualMachineManager.majorInterfaceVersion()
、および VirtualMachineManager.minorInterfaceVersion()
によって取得できます。
public String version()
java.version
プロパティに指定されている方法で返します。JDI インタフェースのバージョンを取得するには、VirtualMachineManager.majorInterfaceVersion()
および VirtualMachineManager.minorInterfaceVersion()
を使用します。
public String name()
java.vm.name
に指定されている方法で返します。
public void setDebugTraceMode(int traceFlags)
出力は実装によって異なります。トレースモードが無視される場合もあります。
traceFlags
- 有効にするトレースの種類を特定する
|
Java Debug Interface | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |