Java Debug Interface

com.sun.jdi
インタフェース VirtualMachine

すべてのスーパーインタフェース:
Mirror
既知のサブインタフェースの一覧:
PathSearchingVirtualMachine

public interface VirtualMachine
extends Mirror

デバッグのターゲット Virtual Machine です。厳密には、ターゲット VM の複合状態を示す mirror です。ほかのすべてのミラーは、このインタフェースのインスタンスと関連しています。ほかのすべてのミラーへのアクセスは、このインタフェースのインスタンスを介して、直接または間接的に行います。大域 VM プロパティへのアクセスおよび VM の実行の制御は、このインタフェースから直接行います。

このインタフェースのインスタンスは、Connector のインスタンスによって作成されます。

ターゲット VM が切断された場合、VirtualMachine を引数に取る VirtualMachine 上の任意のメソッドは、VMDisconnectedException をスローし、VMDisconnectEventEventQueue から読み出せるようになります。

VirtualMachine を引数に取る VirtualMachine 上の任意のメソッドは、ターゲット VM のメモリが不足すると VMOutOfMemoryException をスローします。

導入されたバージョン:
1.3

フィールドの概要
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
 

フィールドの詳細

TRACE_NONE

public static final int TRACE_NONE
すべてのトレースが無効になります。

関連項目:
定数フィールド値

TRACE_SENDS

public static final int TRACE_SENDS
ターゲット VM に送信される JDWP パケットのトレースが有効になります。

関連項目:
定数フィールド値

TRACE_RECEIVES

public static final int TRACE_RECEIVES
ターゲット VM から受信される JDWP パケットのトレースが有効になります。

関連項目:
定数フィールド値

TRACE_EVENTS

public static final int TRACE_EVENTS
内部イベント処理のトレースが有効になります。

関連項目:
定数フィールド値

TRACE_REFTYPES

public static final int TRACE_REFTYPES
参照型の内部管理のトレースが有効になります。

関連項目:
定数フィールド値

TRACE_OBJREFS

public static final int TRACE_OBJREFS
オブジェクト参照の内部管理のトレースが有効になります。

関連項目:
定数フィールド値

TRACE_ALL

public static final int TRACE_ALL
すべてのトレースが有効になります。

関連項目:
定数フィールド値
メソッドの詳細

classesByName

public List classesByName(String className)
指定された名前に一致するロード済みの参照型を返します。名前は、java.lang.String のように完全指定する必要があります。返されるリストには、指定された名前を使用して検索された各クラスまたはインタフェースの ReferenceType が含まれます。ロード済みのクラス以外は検索されません。指定された名前のクラスはロードされません。

返されるリストには、準備の段階でロード済みの参照型、および準備が定義されていない型 (配列など) が含まれます。

パラメータ:
className - 検索するクラスとインタフェースの名前
戻り値:
ターゲット VM の指定された名前の型をミラー化する ReferenceType オブジェクトのリスト

allClasses

public List allClasses()
ロード済みのすべての型を返します。返されるリストには、ターゲット VM のロード済みの型ごとに、ReferenceType が出力されます。このリストには、クラス、インタフェース、および配列の型をミラー化する ReferenceType が含まれます。

返されるリストには、準備の段階でロード済みの参照型、および準備が定義されていない型 (配列など) が含まれます。

戻り値:
ターゲット VM のロード済みの型をミラー化する ReferenceType オブジェクトのリスト

redefineClasses

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 によってサポートされていない場合
導入されたバージョン:
1.4
関連項目:
Method.isObsolete(), ThreadReference.popFrames(com.sun.jdi.StackFrame), canRedefineClasses(), canAddMethod(), canUnrestrictedlyRedefineClasses()

allThreads

public List allThreads()
現在実行中のスレッドのリストを返します。リストには、ターゲット VM の実行中のスレッドごとに、そのスレッドをミラー化する ThreadReference が出力されます。返されるリストには、java.lang.Thread によって作成されたスレッド、JNI によってターゲット VM に接続されたすべてのネイティブスレッド、およびターゲット VM によって作成されたシステムスレッドが含まれます。開始していないスレッドオブジェクト (Thread.start() を参照)、および実行が完了したスレッドオブジェクトは、返されるリスト内に含まれません。

戻り値:
ThreadReference オブジェクトのリスト。各オブジェクトに、VM 内で実行されているスレッドが対応する

suspend

public void suspend()
この Virtual Machine で実行中のアプリケーションの実行を中断します。現在実行中のすべてのスレッドが中断されます。

Thread.suspend() と異なり、Virtual Machine の中断と各スレッドの中断はどちらもカウントされます。スレッドは、再実行される前に、(resume() または ThreadReference.resume() によって) 中断された回数と同じ回数だけ再開する必要があります。


resume

public void resume()
この Virtual Machine で動作中のアプリケーションの実行を再開します。すべてのスレッドは、ThreadReference.resume() に記述されている方法で再開されます。

関連項目:
suspend()

topLevelThreadGroups

public List topLevelThreadGroups()
親を持たない各スレッドグループを返します。返されるリストには、最上位のスレッドグループごとに ThreadGroupReference が含まれます。

このコマンドは、既存のスレッドグループのツリー (1 つまたは複数) を構築するときに、最初に使用します。

戻り値:
ThreadGroupReference オブジェクトのリスト。各オブジェクトに、最上位の各スレッドグループが対応する

eventQueue

public EventQueue eventQueue()
この Virtual Machine のイベントキューを返します。Virtual Machine は EventQueue オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。

戻り値:
この Virtual Machine の EventQueue

eventRequestManager

public EventRequestManager eventRequestManager()
この Virtual Machine のイベント要求マネージャを返します。EventRequestManager は、ブレークポイントなどのユーザが設定可能なイベントを制御します。Virtual Machine は EventRequestManager オブジェクトを 1 つだけ持ち、このメソッドは呼び出されるたびに同じインスタンスを返します。

戻り値:
この Virtual Machine の EventRequestManager

mirrorOf

public BooleanValue mirrorOf(boolean value)
指定された値に対して BooleanValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する boolean 値
戻り値:
指定された boolean 値に対する BooleanValue

mirrorOf

public ByteValue mirrorOf(byte value)
指定された値に対して ByteValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する byte 値
戻り値:
指定された byte 値に対する ByteValue

mirrorOf

public CharValue mirrorOf(char value)
指定された値に対して CharValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する char 値
戻り値:
指定された char 値に対する CharValue

mirrorOf

public ShortValue mirrorOf(short value)
指定された値に対して ShortValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する short 値
戻り値:
指定された short 値に対する ShortValue

mirrorOf

public IntegerValue mirrorOf(int value)
指定された値に対して IntegerValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する int 値
戻り値:
指定された int 値に対する IntegerValue

mirrorOf

public LongValue mirrorOf(long value)
指定された値に対して LongValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する long 値
戻り値:
指定された long 値に対する LongValue

mirrorOf

public FloatValue mirrorOf(float value)
指定された値に対して FloatValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する float 値
戻り値:
指定された float 値に対する FloatValue

mirrorOf

public DoubleValue mirrorOf(double value)
指定された値に対して DoubleValue を作成します。この値を使用して、この Virtual Machine の変数またはフィールドから取得した値の設定および比較を行うことができます。

パラメータ:
value - 値を作成する double 値
戻り値:
指定された double 値に対する DoubleValue

mirrorOf

public StringReference mirrorOf(String value)
この Virtual Machine 内に文字列を作成します。この文字列を使用して、この Virtual Machine の変数またはフィールドから取得した文字列値の設定および比較を行うことができます。

戻り値:
ターゲット VM 内に新しく作成した文字列をミラー化する StringReference

process

public Process process()
この Virtual Machine が LaunchingConnector で起動されている場合は、その Process オブジェクトを返します。

戻り値:
この Virtual Machine の Process オブジェクト。LaunchingConnector で起動されていない場合は null

dispose

public void dispose()
この Virtual Machine のミラーを無効にします。ターゲット VM への通信チャネルが閉じ、ターゲット VM は、このデバッガまたは別のデバッガから後続の接続を受け入れる準備をします。準備には、次のタスクが含まれます。 ターゲット VM で現在実行中のすべてのメソッド呼び出しは、切断後に続行されます。これらのメソッド呼び出しが完了したら、呼び出し側のスレッドは停止した場所から再開します。

この VirtualMachine に起因するリソース (ObjectReference、ReferenceType など) は、無効になります。


exit

public void exit(int exitCode)
ミラー化された VM が、特定のエラーコードで終了します。この VirtualMachine に関連したすべてのリソースが解放されます。ミラー化された VM がリモートの場合は、通信チャネルが閉じます。この VirtualMachine に起因するリソース (ObjectReference、ReferenceType など) は、無効になります。

ミラー化された VM 内で実行中のスレッドは、強制終了します。スレッド終了の例外はスローされず、finally ブロックも実行されません。

パラメータ:
exitCode - ターゲット VM の終了コード

canWatchFieldModification

public boolean canWatchFieldModification()
ターゲット VM でフィールド変更のウォッチポイントがサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canWatchFieldAccess

public boolean canWatchFieldAccess()
ターゲット VM でフィールドアクセスのウォッチポイントがサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canGetBytecodes

public boolean canGetBytecodes()
ターゲット VM でメソッドのバイトコードの検索がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canGetSyntheticAttribute

public boolean canGetSyntheticAttribute()
ターゲット VM でメソッドまたはフィールドの合成属性の問い合わせがサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canGetOwnedMonitorInfo

public boolean canGetOwnedMonitorInfo()
ターゲット VM でスレッドが所有しているモニターの検索がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canGetCurrentContendedMonitor

public boolean canGetCurrentContendedMonitor()
ターゲット VM でスレッドが現在待機しているモニターの検索がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canGetMonitorInfo

public boolean canGetMonitorInfo()
ターゲット VM でオブジェクトのモニター情報の検索がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canUseInstanceFilters

public boolean canUseInstanceFilters()
ターゲット VM で特定のインタスタンスオブジェクトによるイベントのフィルタ処理がサポートされているかどうかを判定します。例については、BreakpointRequest.addInstanceFilter(com.sun.jdi.ObjectReference) を参照してください。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false

canRedefineClasses

public boolean canRedefineClasses()
ターゲット VM で任意のレベルのクラス再定義がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false
導入されたバージョン:
1.4
関連項目:
redefineClasses(java.util.Map)

canAddMethod

public boolean canAddMethod()
ターゲット VM でクラス再定義の実行時にメソッドを追加できるかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false
導入されたバージョン:
1.4
関連項目:
redefineClasses(java.util.Map)

canUnrestrictedlyRedefineClasses

public boolean canUnrestrictedlyRedefineClasses()
ターゲット VM でクラス再定義の実行時に無制限に変更を加えることができるかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false
導入されたバージョン:
1.4
関連項目:
redefineClasses(java.util.Map)

canPopFrames

public boolean canPopFrames()
ターゲット VM でスレッドスタックからのフレームのポップがサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false
導入されたバージョン:
1.4
関連項目:
ThreadReference.popFrames(com.sun.jdi.StackFrame)

canGetSourceDebugExtension

public boolean canGetSourceDebugExtension()
ターゲット VM でソースデバッグ拡張機能の取得がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false
導入されたバージョン:
1.4
関連項目:
ReferenceType.sourceDebugExtension()

canRequestVMDeathEvent

public boolean canRequestVMDeathEvent()
ターゲット VM で VMDeathRequest の作成がサポートされているかどうかを判定します。

戻り値:
機能がサポートされている場合は true、それ以外の場合は false
導入されたバージョン:
1.4
関連項目:
EventRequestManager.createVMDeathRequest()

setDefaultStratum

public void setDefaultStratum(String stratum)
この VM のデフォルト層を設定します (層については Location を参照)。この設定は、クラスファイルで設定されたクラスごとのデフォルトよりも優先されます。

このメソッドは、Location.sourceName() などの位置問い合わせと、ステップ実行時に使用する行の境界線に影響を与えます。

パラメータ:
stratum - VM のデフォルトとして設定する層。クラスごとのデフォルトを使用する場合は null
例外:
UnsupportedOperationException - ターゲット Virtual Machine がこの操作をサポートしていない場合
導入されたバージョン:
1.4

getDefaultStratum

public String getDefaultStratum()
VM のデフォルト層を返します。

戻り値:
setDefaultStratum(String) によってデフォルト層が設定されていない場合は null。この場合、クラスごとのデフォルト (ReferenceType.defaultStratum()) が使用される
導入されたバージョン:
1.4
関連項目:
setDefaultStratum(String), ReferenceType.defaultStratum()

description

public String description()
ターゲット VM 、およびターゲット VM をミラー化するデバッガのサポートについてのテキスト情報を返します。この情報に特定の形式は保証されていません。通常は、ターゲット VM とデバッガインタフェースのバージョン情報が含まれます。VM および JDI の正確なバージョン情報は、version()VirtualMachineManager.majorInterfaceVersion()、および VirtualMachineManager.minorInterfaceVersion() によって取得できます。

戻り値:
説明

version

public String version()
ターゲット VM 内の Java Runtime Environment のバージョンを、java.version プロパティに指定されている方法で返します。JDI インタフェースのバージョンを取得するには、VirtualMachineManager.majorInterfaceVersion() および VirtualMachineManager.minorInterfaceVersion() を使用します。

戻り値:
ターゲット VM のバージョン

name

public String name()
ターゲット VM の名前をプロパティ java.vm.name に指定されている方法で返します。

戻り値:
ターゲット VM 名

setDebugTraceMode

public void setDebugTraceMode(int traceFlags)
com.sun.jdi 実装によって実行される動作をトレースします。すべてのトレース情報は、System.err に出力されます。トレースフラグは、出力する情報を制限するときに使用します。指定したフラグは、このメソッドが次に呼び出されるまで有効で、対応するトレースが継続して行われます。

出力は実装によって異なります。トレースモードが無視される場合もあります。

パラメータ:
traceFlags - 有効にするトレースの種類を特定する

Java Debug Interface