• VirtualMachine コマンドセット (1)
  • ReferenceType コマンドセット (2)
  • ClassType コマンドセット (3)
  • ArrayType コマンドセット (4)
  • InterfaceType コマンドセット (5)
  • Method コマンドセット (6)
  • Field コマンドセット (8)
  • ObjectReference コマンドセット (9)
  • StringReference コマンドセット (10)
  • ThreadReference コマンドセット (11)
  • ThreadGroupReference コマンドセット (12)
  • ArrayReference コマンドセット (13)
  • ClassLoaderReference コマンドセット (14)
  • EventRequest コマンドセット (15)
  • StackFrame コマンドセット (16)
  • ClassObjectReference コマンドセット (17)
  • Event コマンドセット (64)
  • Error 定数
  • EventKind 定数
  • ThreadStatus 定数
  • SuspendStatus 定数
  • ClassStatus 定数
  • TypeTag 定数
  • Tag 定数
  • StepDepth 定数
  • StepSize 定数
  • SuspendPolicy 定数
  • InvokeOptions 定数

    VirtualMachine コマンドセット (1)

    Version コマンド (1)
    ターゲットの VM により実装された JDWP のバージョンを返します。バージョン文字列の書式は、実装に依存します。
    出力データ
    (なし)
    応答データ
    stringdescriptionVM のバージョンに関するテキスト情報
    intjdwpMajorJDWP のメジャーバージョン番号
    intjdwpMinorJDWP のマイナーバージョン番号
    stringvmVersionターゲット VM の JRE バージョン (java.version プロパティーの値と同じ)
    stringvmNameターゲット VM 名 (java.vm.name プロパティーの値と同じ)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    ClassesBySignature コマンド (2)
    ターゲット VM によりロードされたクラスのうち、指定されたシグニチャーと一致するものすべての参照型を返します。複数のクラスローダーが同名のクラスをロードしている場合、複数の参照型が返されます。検索は、ロードされたクラスだけに限定されます。指定されたシグニチャーを持つクラスのロードは行われません。
    出力データ
    stringsignature検索するクラスの JNI シグニチャー (たとえば、"Ljava/lang/String;")。  
    応答データ
    intclassesあとに続く参照型の数。 
    classes 回の繰り返し:
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeID対応するロードされた参照型
    intstatus現在のクラスのステータス。  
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    AllClasses コマンド (3)
    ターゲット VM によって現在ロードされているクラスすべての参照型を返します。
    出力データ
    (なし)
    応答データ
    intclassesあとに続く参照型の数。 
    classes 回の繰り返し:
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeIDロードされた参照型 
    stringsignatureロードされた参照型の JNI シグニチャー
    intstatus現在のクラスのステータス。  
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    AllThreads コマンド (4)
    ターゲット VM で実行中のすべてのスレッドを返します。返されるリストには、java.lang.Thread で作成されたスレッド、JNI を介してターゲット VM に接続されたすべてのネイティブスレッド、およびターゲット VM により作成されたシステムスレッドが含まれます。開始されていないスレッド、および実行の完了したスレッドは、リストに含まれません。
    出力データ
    (なし)
    応答データ
    intthreadsあとに続くスレッドの数
    threads 回の繰り返し:
    threadIDthread実行中のスレッド
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    TopLevelThreadGroups コマンド (5)
    親を持たないスレッドグループをすべて返します。このコマンドは、既存のスレッドグループの (1 つまたは複数の) ツリーを構築する最初の手順として使用できます。
    出力データ
    (なし)
    応答データ
    intgroupsあとに続くスレッドグループの数
    groups 回の繰り返し:
    threadGroupIDgroupトップレベルのスレッドグループ
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    Dispose コマンド (6)
    この仮想マシンのミラーを無効にします。ターゲット VM への通信チャネルが閉じられ、ターゲット VM は、このデバッガまたは別のデバッガからの次の接続を受け付ける準備をします。それには、次のような作業が含まれます。ターゲット VM で実行中のすべてのメソッド呼び出しは、切断後も継続されます。そのようなメソッド呼び出しが完了すると、呼び出し元のスレッドは、もともと停止した場所から実行を継続します。

    この仮想マシンを起源とするリソース (オブジェクト参照や参照型など) は、無効になります。

    出力データ
    (なし)
    応答データ
    (なし)
    エラーデータ
    (なし)
    IDSizes コマンド (7)
    ターゲット VM 内に存在する可変サイズのデータ型のサイズを返します。戻り値は、コマンドパケットおよび応答パケット内でその識別子が使用しているバイト数を示します。
    出力データ
    (なし)
    応答データ
    intfieldIDSizefieldID のサイズ (バイト単位)
    intmethodIDSizemethodID のサイズ (バイト単位)
    intobjectIDSizeobjectID のサイズ (バイト単位)
    intreferenceTypeIDSizereferenceTypeID のサイズ (バイト単位)
    intframeIDSizeframeID のサイズ (バイト単位)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    Suspend コマンド (8)
    ターゲット VM で稼動中のアプリケーションの実行を中断します。現在実行中の Java スレッドは、すべて中断されます。

    java.lang.Thread.suspend とは異なり、仮想マシンと個々のスレッド両方の中断がカウントされます。スレッドをふたたび実行する前に、VM レベルの Resume コマンドまたはスレッドレベルの Resume コマンドを使って、中断の実行回数と同じ数だけ再開を実行する必要があります。

    出力データ
    (なし)
    応答データ
    (なし)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    Resume コマンド (9)
    Suspend コマンドの実行後、またはイベントによるアプリケーションの停止後に、アプリケーションの実行を再開します。仮想マシンおよび個々のスレッドの中断は、カウントされます。特定のスレッドの中断回数が n 回の場合、そのスレッドを続行する前に n 回再開する必要があります。
    出力データ
    (なし)
    応答データ
    (なし)
    エラーデータ
    (なし)
    Exit コマンド (10)
    指定された終了コードでターゲット VM を終了させます。プラットフォームによっては、終了コードが下位 8 ビットなどに切り詰められる場合があります。以前にターゲット VM から返された ID は、すべて無効になります。VM で実行中のスレッドは、そのまま突然に停止させられます。スレッド終了例外はスローされないため、finally ブロックは実行されません。
    出力データ
    intexitCode終了コード
    応答データ
    (なし)
    エラーデータ
    (なし)
    CreateString コマンド (11)
    ターゲット VM 内に文字列オブジェクトを新規作成し、その ID を返します。
    出力データ
    stringutf作成された文字列内で使用する UTF-8 形式の文字。  
    応答データ
    stringIDstringObject作成された文字列 (java.lang.String のインスタンス)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    Capabilities コマンド (12)
    この VM の権限を取得します。各権限は boolean 値として返され、その権限が存在するかどうかを示します。各権限に関連するコマンドは、その権限が利用できない場合、NOT_IMPLEMENTED エラーを返します。
    出力データ
    (なし)
    応答データ
    booleancanWatchFieldModificationVM がフィールドの変更を監視して、変更ウォッチポイントイベントを送信可能かどうか 
    booleancanWatchFieldAccessVM がフィールドへのアクセスを監視して、アクセスウォッチポイントイベントを送信可能かどうか 
    booleancanGetBytecodesVM が、指定されたメソッドのバイトコードを取得できるかどうか  
    booleancanGetSyntheticAttributeフィールドまたはメソッドが合成である場合、VM がそれを判別できるかどうか(つまり、メソッドまたはフィールドがコンパイラにより生成されたものである場合、VM がそれを判別できるかどうか)  
    booleancanGetOwnedMonitorInfo所有されたスレッドのモニター情報を、VM が取得可能かどうか 
    booleancanGetCurrentContendedMonitor現在競合しているスレッドのモニターを、VM が取得可能かどうか 
    booleancanGetMonitorInfo指定されたオブジェクトのモニター情報を、VM が取得できるかどうか  
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    ClassPaths コマンド (13)
    ターゲット VM の classpath および bootclasspath を取得します。classpath が定義されていない場合は、空のリストを返します。bootclasspath が定義されていない場合は、空のリストを返します。
    出力データ
    (なし)
    応答データ
    stringbaseDir次のリスト内のいずれかの相対パス解決で使用されるベースディレクトリ。
    intclasspathsclasspath 内のパスの数
    classpaths 回の繰り返し:
    stringpathclasspath の 1 コンポーネント
    intbootclasspathsbootclasspath 内のパスの数。
    bootclasspaths 回の繰り返し:
    stringpathbootclasspath の 1 コンポーネント
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    DisposeObjects コマンド (14)
    オブジェクト ID のリストを解放します。リスト内の各オブジェクトに対して、以下の処理が適用されます。バックエンドによって保持されている参照の回数 (参照カウント) が、refCnt によって減らされます。その後、参照カウントが 0 以下であれば、その ID は解放されます。解放された ID に関連付けられているバックエンドリソースがあれば、そのリソースも解放され、オブジェクトのガベージコレクションが無効にされていれば、再度有効にされます。このコマンドを送った側は、解放された ID を参照するコマンドをそれ以降は送らないようにしなければなりません。

    このコマンドの使用は、必須ではありません。このコマンドが送られない場合、各 ID に関連付けられているリソースは、対応するオブジェクトのガベージコレクションの実行後に、バックエンドにより解放されます。このコマンドのもっとも効果的な利用法は、大量のオブジェクト (大規模な配列など) がバックエンドから取得されているが、すぐにはガベージコレクションが行われない場合に、バックエンドの負荷を軽減することです。

    このコマンドで解放された ID は、バックエンドにより再利用されることがあります。この説明では、参照がカウントされていることを想定しており、バックエンドは同等の動作をする任意の実装を使用できます。

    出力データ
    intrequestsあとに続くオブジェクト破棄要求の数
    requests 回の繰り返し:
    objectIDobjectオブジェクト ID 
    intrefCntこのオブジェクト ID がバックエンドから受け取ったパケットに含まれていた回数。ここに正確なカウントを指定することにより、オブジェクト ID が着信パケットの一部であり、まだフロントエンドにより処理されていない場合に、オブジェクト ID がバックエンドで解放されることを回避できる。
    応答データ
    (なし)
    エラーデータ
    (なし)
    HoldEvents コマンド (15)
    ターゲット VM に対し、イベントの送信を停止するよう伝えます。イベントは破棄されるのではなく、次に ReleaseEvents コマンドが送信されるまで保持されます。大量のイベントが生成される状況で、デバッガ VM に送信されるイベントの数を制御する場合に、このコマンドは有用です。イベントはデバッガバックエンドにより保持されます。アプリケーションの実行は、バッファーがオーバーフローしないよう、デバッガバックエンドにより凍結されます。コマンドへの応答は保持されないため、このコマンドによる影響はありません。イベントがすでに保持されている場合、このコマンドは無視されます。
    出力データ
    (なし)
    応答データ
    (なし)
    エラーデータ
    (なし)
    ReleaseEvents コマンド (16)
    ターゲット VM に対し、イベントの送信を継続するよう伝えます。このコマンドは、HoldEvents コマンドの実行後に通常のアクティビティーを復元する際に使用されます。現在有効な HoldEvents コマンドが存在しない場合、このコマンドは無視されます。
    出力データ
    (なし)
    応答データ
    (なし)
    エラーデータ
    (なし)
    CapabilitiesNew コマンド (17)
    この VM のすべての権限を取得します。各権限は boolean 値として返され、その権限が存在するかどうかを示します。各権限に関連するコマンドは、JDWP 1 バージョン 1.4 以降でその権限が利用できない場合、NOT_IMPLEMENTED エラーを返します。
    出力データ
    (なし)
    応答データ
    booleancanWatchFieldModificationVM がフィールドの変更を監視して、変更ウォッチポイントイベントを送信可能かどうか 
    booleancanWatchFieldAccessVM がフィールドへのアクセスを監視して、アクセスウォッチポイントイベントを送信可能かどうか 
    booleancanGetBytecodesVM が、指定されたメソッドのバイトコードを取得できるかどうか  
    booleancanGetSyntheticAttributeフィールドまたはメソッドが合成である場合、VM がそれを判別できるかどうか(つまり、メソッドまたはフィールドがコンパイラにより生成されたものである場合、VM がそれを判別できるかどうか)  
    booleancanGetOwnedMonitorInfo所有されたスレッドのモニター情報を、VM が取得可能かどうか 
    booleancanGetCurrentContendedMonitor現在競合しているスレッドのモニターを、VM が取得可能かどうか 
    booleancanGetMonitorInfo指定されたオブジェクトのモニター情報を、VM が取得できるかどうか  
    booleancanRedefineClassesVM がクラスを再定義できるかどうか
    booleancanAddMethodVM がクラスを再定義するときにメソッドを追加できるかどうか
    booleancanUnrestrictedlyRedefineClassesVM がクラスを自由に再定義できるかどうか
    booleancanPopFramesVM がスタックフレームをポップできるかどうか
    booleancanUseInstanceFiltersVM が特定のオブジェクトでイベントをフィルタできるかどうか
    booleancanGetSourceDebugExtensionVM がソースデバッグ拡張機能を取得できるかどうか
    booleancanRequestVMDeathEventVM が VM 終了イベントを要求できるかどうか
    booleancanSetDefaultStratumVM がデフォルトの層を設定できるかどうか
    booleancanGetInstanceInfoVM がインスタンス、クラスのインスタンス数、参照するオブジェクトを返せるかどうか
    booleancanRequestMonitorEventsVM が監視イベントを要求できるかどうか
    booleancanGetMonitorFrameInfoVM がフレームの深さに関する情報を含む監視を取得できるかどうか
    booleancanUseSourceNameFiltersVM がソース名に基づいてクラス準備イベントをフィルタ処理できるかどうか
    booleancanGetConstantPoolVM が定数プール情報を返せるかどうか
    booleancanForceEarlyReturnVM がメソッドからの戻り値を早期に返させることができるかどうか
    booleanreserved22将来の権限のために予約済み 
    booleanreserved23将来の権限のために予約済み 
    booleanreserved24将来の権限のために予約済み 
    booleanreserved25将来の権限のために予約済み 
    booleanreserved26将来の権限のために予約済み 
    booleanreserved27将来の権限のために予約済み 
    booleanreserved28将来の権限のために予約済み 
    booleanreserved29将来の権限のために予約済み 
    booleanreserved30将来の権限のために予約済み 
    booleanreserved31将来の権限のために予約済み 
    booleanreserved32将来の権限のために予約済み 
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    RedefineClasses コマンド (18)
    新しいクラス定義をインストールします。ターゲット VM で再定義されたクラスのメソッドにアクティブなスタックフレームがあると、そのアクティブフレームは元のメソッドのバイトコードの実行を続行します。これらのメソッドは、使用されていないものと見なされます (IsObsolete を参照)。再定義されたクラスのメソッドは、ターゲット VM の新しい呼び出しに使用されます。元のメソッド ID は再定義されたメソッドを参照します。再定義されたクラスのすべてのブレークポイントが解除されます。スタックフレームをリセットする場合は、PopFrames コマンドを使用して、使用されていないメソッドとともにフレームをポップすることができます。

    canRedefineClasses 権限が必要です (CapabilitiesNew を参照)。canRedefineClasses 権限に加え、ターゲット VM には、クラスを再定義するときにメソッドを追加する canAddMethod 権限、または任意の方法でクラスを再定義する canUnrestrictedlyRedefineClasses が必要です。

    出力データ
    intclassesあとに続く参照型の数。 
    classes 回の繰り返し:
    referenceTypeIDrefType参照型。 
    intclassfile定義するクラスのバイト数 (下)
    classfile 回の繰り返し:
    byteclassbyteJVM クラスファイル形式のバイト。
    応答データ
    (なし)
    エラーデータ
    INVALID_CLASSrefType の 1 つが参照型の ID ではない。
    INVALID_OBJECTrefType の 1 つが既知の ID ではない。
    UNSUPPORTED_VERSIONクラスファイルのバージョンがこの VM でサポートされていない。
    INVALID_CLASS_FORMAT仮想マシンがクラスファイルを読み込もうとしたが、ファイルの形式が間違っているか、その他の理由でクラスファイルとして解釈できない。
    CIRCULAR_CLASS_DEFINITIONクラスの初期化中に、循環定義が検出された。
    FAILS_VERIFICATIONクラスファイルの形式は正しいが、検証ルーチンは何らかの種類の内部的な不整合かセキュリティー上の問題を検出した。
    NAMES_DONT_MATCH新しいクラスファイル内で定義されたクラス名が、旧クラスオブジェクト内の名前と異なる。
    NOT_IMPLEMENTEDこの機能は実装されていない (CapabilitiesNew.canRedefineClasses が false)
    ADD_METHOD_NOT_IMPLEMENTED追加メソッドが実装されていない。
    SCHEMA_CHANGE_NOT_IMPLEMENTEDスキーマの変更が実装されていない。
    HIERARCHY_CHANGE_NOT_IMPLEMENTED新しいクラスのバージョンの直接スーパークラスが異なる、または直接実装されているインタフェースが異なり、canUnrestrictedlyRedefineClasses が false。
    DELETE_METHOD_NOT_IMPLEMENTED新しいクラスのバージョンでは、旧クラスのバージョンで宣言したメソッドを宣言せず、また canUnrestrictedlyRedefineClasses が false。
    CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED新しいクラスのバージョンの修飾子が異なり、canUnrestrictedlyRedefineClasses が false。
    METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED新しいクラスのバージョンのメソッドの修飾子が旧クラスのバージョンの修飾子と異なり、canUnrestrictedlyRedefineClasses が false。
    VM_DEAD仮想マシンが動作していない。 
    SetDefaultStratum コマンド (19)
    デフォルトの層を設定します。canSetDefaultStratum 権限が必要です (CapabilitiesNew を参照)。
    出力データ
    stringstratumIDデフォルト層、または参照型デフォルトを使用するための空の文字列。
    応答データ
    (なし)
    エラーデータ
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    AllClassesWithGeneric コマンド (20)
    ターゲット VM によって現在ロードされているクラスすべての参照型を返します。各クラスに対して JNI シグニチャーとジェネリックシグニチャーの両方が返されます。ジェネリクスシグニチャーについては、Java™ 仮想マシン仕様のシグニチャー属性のセクションを参照してください。これは JDWP バージョン 1.5 以降です。
    出力データ
    (なし)
    応答データ
    intclassesあとに続く参照型の数。 
    classes 回の繰り返し:
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeIDロードされた参照型 
    stringsignatureロードされた参照型の JNI シグニチャー。
    stringgenericSignatureロードされた参照型のジェネリックシグニチャー、ない場合は空の文字列。
    intstatus現在のクラスのステータス。  
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    InstanceCounts コマンド (21)
    入力リスト内の各参照型のインスタンス数を返します。ガベージコレクト目的で到達可能なインスタンスだけがカウントされます。アンロード済みなどの理由で参照型が無効な場合、インスタンスカウントとしてゼロが返されます。

    これは JDWP バージョン 1.6 以降。canGetInstanceInfo 権限が必要です (CapabilitiesNew を参照)。

    出力データ
    intrefTypesCount全参照型の数。負でない数値。
    refTypesCount 回の繰り返し:
    referenceTypeIDrefType参照型 ID。
    応答データ
    intcountsあとに続く回数。
    counts 回の繰り返し:
    longinstanceCount「出力データ」内の参照型のインスタンス数。
    エラーデータ
    ILLEGAL_ARGUMENTrefTypesCount がゼロより小さい。
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 

    ReferenceType コマンドセット (2)

    Signature コマンド (1)
    参照型の JNI シグニチャーを返します。JNI シグニチャーの形式については、Java Native Inteface 仕様を参照してください

    プリミティブクラスの場合、返されるシグニチャーは対応するプリミティブ型のシグニチャーです。たとえば、「I」は、java.lang.Integer.TYPE により表されるクラスのシグニチャーとして返されます。

    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    stringsignature参照型の JNI シグニチャー。 
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    ClassLoader コマンド (2)
    指定された参照型をロードした java.lang.ClassLoader のインスタンスを返します。その参照型がシステムクラスローダーによりロードされた場合、返されるオブジェクト ID は null になります。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    classLoaderIDclassLoader参照型のクラスローダー。  
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Modifiers コマンド (3)
    参照型の修飾子 (アクセスフラグともいう) を返します。返されるビットマスクには、参照型の宣言に関する情報が含まれます。参照型が配列またはプリミティブクラス (たとえば、java.lang.Integer.TYPE) である場合、返されるビットマスクの値は定義されません。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intmodBitsJava™ 仮想マシン仕様の第 4 章で定義されている修飾子ビット
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Fields コマンド (4)
    参照型の各フィールドに関する情報を返します。継承したフィールドは含まれません。フィールドリストには、コンパイラにより作成されたすべての合成フィールドが含まれます。フィールドは、クラスファイル内に出現する順序で返されます。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intdeclared宣言されているフィールドの数。 
    declared 回の繰り返し:
    fieldIDfieldIDフィールド ID。 
    stringnameフィールドの名前。
    stringsignatureフィールドの JNI シグニチャー。
    intmodBitsフィールド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、Java™ 仮想マシン仕様の第 4 章に定義されている。また、合成属性の権限を利用可能な場合には、0xf0000000 ビットは、そのフィールドが合成であることを示す。 
    エラーデータ
    CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Methods コマンド (5)
    参照型の各メソッドに関する情報を返します。継承されたメソッドは、含まれません。メソッドのリストには、コンストラクタ (名前「<init>」で識別される)、存在する場合には初期化メソッド (名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。メソッドは、クラスファイル内に出現する順序で返されます。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intdeclared宣言されているメソッドの数。 
    declared 回の繰り返し:
    methodIDmethodIDメソッド ID。 
    stringnameメソッドの名前。
    stringsignatureメソッドの JNI シグニチャー。
    intmodBitsメソッド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、Java™ 仮想マシン仕様の第 4 章に定義されている。また、合成属性の権限を利用可能な場合には、0xf0000000 ビットは、そのメソッドが合成であることを示す。 
    エラーデータ
    CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    GetValues コマンド (6)
    参照型の 1 つまたは複数の static フィールドの値を返します。各フィールドは、参照型のメンバーか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバーでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を取得できます。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    intfields取得する値の数 
    fields 回の繰り返し:
    fieldIDfieldID取得するフィールド
    応答データ
    intvalues返される値の数。fields の取得する値の数と常に等しい。
    values 回の繰り返し:
    valuevalueフィールドの値 
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    INVALID_FIELDID無効なフィールド。 
    VM_DEAD仮想マシンが動作していない。 
    SourceFile コマンド (7)
    参照型が宣言されたソースファイルの名前を返します。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    stringsourceFileソースファイルの名前。ファイルのパス情報は含まれない
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    ABSENT_INFORMATIONソースファイルの属性が存在しない。
    VM_DEAD仮想マシンが動作していない。 
    NestedTypes コマンド (8)
    この型のすぐ内側にネストしたクラスとインタフェースを返します。これらの型のさらに内側にネストしたタイプは含まれません。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intclassesネストされたクラスとインタフェースの数
    classes 回の繰り返し:
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeIDネストされたクラスまたはインタフェースの ID。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Status コマンド (9)
    参照型の現在のステータスを返します。Java™ 仮想マシン仕様のセクション 2.1.6 で説明されているように、ステータスは参照型の初期化の程度を示します。クラスがリンクしている場合は、返されるステータスビットの PREPARED および VERIFIED ビットが設定されます。クラスが初期化されている場合は、返されるステータスビットの INITIALIZED ビットが設定されます。初期化中にエラーが発生した場合は、返されるステータスビットの ERROR ビットが設定されます。返されるステータスビットは、配列型およびプリミティブクラス (java.lang.Integer.TYPE など) の場合は未定義です。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intstatusステータスビット。JDWP.ClassStatus を参照
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Interfaces コマンド (10)
    このクラスによる実装が宣言されたインタフェースを返します。間接的に実装された (実装済みのインタフェースから継承した、またはスーパークラスが実装した) インタフェースは含まれません。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intinterfaces実装したインタフェースの数
    interfaces 回の繰り返し:
    interfaceIDinterfaceType実装されたインタフェース。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    ClassObject コマンド (11)
    この型に対応するクラスオブジェクトを返します。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    classObjectIDclassObjectクラスオブジェクト。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    SourceDebugExtension コマンド (12)
    SourceDebugExtension 属性の値を返します。これは JDWP バージョン 1.4 以降です。canGetSourceDebugExtension 権限が必要です (CapabilitiesNew を参照)。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    stringextension拡張属性
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    ABSENT_INFORMATION拡張属性が指定されていない。
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    SignatureWithGeneric コマンド (13)
    参照型の JNI シグニチャーを返します。存在する場合はジェネリックシグニチャーも一緒に返します。ジェネリクスシグニチャーについては、Java™ 仮想マシン仕様のシグニチャー属性のセクションを参照してください。これは JDWP バージョン 1.5 以降です。

    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    stringsignature参照型の JNI シグニチャー。 
    stringgenericSignature参照型のジェネリックシグニチャー、ない場合は空の文字列。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    FieldsWithGeneric コマンド (14)
    参照型の各フィールドに関する情報 (存在する場合はジェネリックシグニチャーを含む) を返します。継承したフィールドは含まれません。フィールドリストには、コンパイラにより作成されたすべての合成フィールドが含まれます。フィールドは、クラスファイル内に出現する順序で返されます。ジェネリクスシグニチャーについては、Java™ 仮想マシン仕様のシグニチャー属性のセクションを参照してください。これは JDWP バージョン 1.5 以降です。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intdeclared宣言されているフィールドの数。 
    declared 回の繰り返し:
    fieldIDfieldIDフィールド ID。 
    stringnameフィールドの名前。
    stringsignatureフィールドの JNI シグニチャー。
    stringgenericSignatureフィールドのジェネリックシグニチャー、ない場合は空の文字列。
    intmodBitsフィールド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、Java™ 仮想マシン仕様の第 4 章に定義されている。また、合成属性の権限を利用可能な場合には、0xf0000000 ビットは、そのフィールドが合成であることを示す。 
    エラーデータ
    CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    MethodsWithGeneric コマンド (15)
    参照型の各メソッドに関する情報 (存在する場合はジェネリックシグニチャーを含む) を返します。継承したメソッドは含まれません。メソッドのリストには、コンストラクタ (名前「<init>」で識別される)、存在する場合には初期化メソッド (名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。メソッドは、クラスファイル内に出現する順序で返されます。ジェネリクスシグニチャーについては、Java™ 仮想マシン仕様のシグニチャー属性のセクションを参照してください。これは JDWP バージョン 1.5 以降です。
    出力データ
    referenceTypeIDrefType参照型 ID。 
    応答データ
    intdeclared宣言されているメソッドの数。 
    declared 回の繰り返し:
    methodIDmethodIDメソッド ID。 
    stringnameメソッドの名前。
    stringsignatureメソッドの JNI シグニチャー。
    stringgenericSignatureメソッドのジェネリックシグニチャー、ない場合は空の文字列。
    intmodBitsメソッド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、Java™ 仮想マシン仕様の第 4 章に定義されている。また、合成属性の権限を利用可能な場合には、0xf0000000 ビットは、そのメソッドが合成であることを示す。 
    エラーデータ
    CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Instances コマンド (16)
    この参照型のインスタンスを返します。ガベージコレクト目的で到達可能なインスタンスだけが返されます。

    これは JDWP バージョン 1.6 以降。canGetInstanceInfo 権限が必要です (CapabilitiesNew を参照)。

    出力データ
    referenceTypeIDrefType参照型 ID。 
    intmaxInstances返されるインスタンスの最大数。負でない数値。ゼロの場合、すべてのインスタンスが返される。
    応答データ
    intinstancesあとに続くインスタンスの数。
    instances 回の繰り返し:
    tagged-objectIDinstanceこの参照型のインスタンス。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    ILLEGAL_ARGUMENTmaxInstances がゼロより小さい。
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    ClassFileVersion コマンド (17)
    Java 仮想マシン仕様のクラスファイル形式で定義されているクラスファイルのメジャーバージョン番号とマイナーバージョン番号を返します。

    これは JDWP バージョン 1.6 以降。

    出力データ
    referenceTypeIDrefTypeクラス。 
    応答データ
    intmajorVersionメジャーバージョン番号
    intminorVersionマイナーバージョン番号
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    ABSENT_INFORMATIONプリミティブ型および配列型のクラスファイルバージョン情報が存在しない。
    VM_DEAD仮想マシンが動作していない。 
    ConstantPool コマンド (18)
    Java™ 仮想マシン仕様のクラスファイル形式の説明に記載されている constant_pool 項目の形式で、定数プールの raw バイト数を返します。

    これは JDWP バージョン 1.6 以降。canGetConstantPool 権限が必要です (CapabilitiesNew を参照)。

    出力データ
    referenceTypeIDrefTypeクラス。 
    応答データ
    intcount定数プールエントリの総数に 1 を加えた値。これは、Java™ 仮想マシン仕様のクラスファイル形式の説明に記載されている、constant_pool_count 項目と一致する。  
    intbytes 
    bytes 回の繰り返し:
    bytecpbytesraw バイトの定数プール
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    NOT_IMPLEMENTEDターゲット仮想マシンが定数プール情報の取得をサポートしていない。
    ABSENT_INFORMATIONプリミティブ型および配列型の定数プール情報が存在しない。
    VM_DEAD仮想マシンが動作していない。 

    ClassType コマンドセット (3)

    Superclass コマンド (1)
    クラスの直属のスーパークラスを返します。
    出力データ
    classIDclazzクラス型 ID。 
    応答データ
    classIDsuperclassスーパークラス (java.lang.Object のクラス ID が指定されている場合は、null)。
    エラーデータ
    INVALID_CLASSclazz がクラスの ID ではない。 
    INVALID_OBJECTclazz が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    SetValues コマンド (2)
    1 つまたは複数の static フィールドの値を設定します。各フィールドは、クラス型のメンバーか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバーでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を設定できます。最後のフィールドを設定することはできません。プリミティブ値の場合、値の型とフィールドの型は正確に一致している必要があります。オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。
    出力データ
    classIDclazzクラス型 ID。 
    intvalues設定するフィールドの数。 
    values 回の繰り返し:
    fieldIDfieldID設定するフィールド。 
    untagged-valuevalueフィールドに入力する値。 
    応答データ
    (なし)
    エラーデータ
    INVALID_CLASSclazz がクラスの ID ではない。 
    CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
    INVALID_OBJECTclazz が既知の ID ではない、またはオブジェクトフィールドの値が既知の ID ではない。
    INVALID_FIELDID無効なフィールド。 
    VM_DEAD仮想マシンが動作していない。 
    InvokeMethod コマンド (3)
    static メソッドを呼び出します。メソッドは、クラス型のメンバーか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバーでなければなりません。アクセス制御は実行されません。このため、たとえば private メソッドを呼び出すことができます。

    メソッド呼び出しは、指定されたスレッドで実行されます。メソッド呼び出しは、指定されたスレッドがイベントにより中断されている場合にだけ実行されます。ターゲット VM がフロントエンドにより中断されている場合のメソッド呼び出しはサポートされていません。

    指定されたメソッドは、指定された引数リスト内の引数を使って呼び出されます。メソッド呼び出しは同期的に行われます。そのため、呼び出されたメソッドがターゲット VM 内で復帰するまで、応答パケットは送信されません。戻り値 (たいていの場合、void 値) は応答パケットに含まれます。呼び出されたメソッドが例外をスローする場合、例外オブジェクト ID が応答パケット内に設定されます。そうでない場合、例外オブジェクト ID は null になります。

    プリミティブ引数の場合、引数値の型と引数の型は厳密に一致している必要があります。オブジェクト引数の場合、引数値の型から引数の型への拡張参照変換が存在し、かつ引数の型がロードされている必要があります。

    デフォルトでは、ターゲット VM 内のすべてのスレッドがメソッドの呼び出し中に再開されます (イベントまたはコマンドによって以前に中断されたスレッドの場合)。これは、いずれかのスレッドが、呼び出し先メソッドが必要とするモニターを所有している場合に、デッドロックが発生するのを防ぎます。ブレークポイントまたはほかのイベントが、呼び出し中に発生する可能性があります。ただし、この暗黙の再開処理が、ThreadReference の Resume コマンドの処理とまったく同じであることに注意してください。このため、スレッドの中断カウントが 1 より大きいと、呼び出し中もスレッドは中断状態のままになります。デフォルトでは、ターゲット VM 内のすべてのスレッドは、呼び出しの完了時に中断します (呼び出し前のスレッドの状態とは無関係)。

    options フィールドに INVOKE_SINGLE_THREADED ビットフラグを指定することにより、呼び出し中にほかのスレッドが再開しないようにできます。ただし、前述のようなデッドロックに対する保護や、デッドロックからの回復ができなくなるため、このオプションはよく注意して利用してください。指定されたスレッドだけが再開されます (前述したすべてのスレッドの場合と同様)。シングルスレッド呼び出しが完了すると、呼び出し元スレッドはふたたび中断されます。シングルスレッド呼び出し中に開始されたすべてのスレッドは、呼び出し完了時にも中断されません。

    ターゲット VM が呼び出し中に切断されても (たとえば、VirtualMachine の Dispose コマンドによる)、メソッド呼び出しは続行されます。

    出力データ
    classIDclazzクラス型 ID。 
    threadIDthread呼び出しを行うスレッド。 
    methodIDmethodID呼び出すメソッド。 
    intarguments 
    arguments 回の繰り返し:
    valuearg引数の値。 
    intoptions呼び出しオプション 
    応答データ
    valuereturnValue戻り値。
    tagged-objectIDexceptionスローされた例外。
    エラーデータ
    INVALID_CLASSclazz がクラスの ID ではない。 
    INVALID_OBJECTclazz が既知の ID ではない。 
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
    VM_DEAD仮想マシンが動作していない。 
    NewInstance コマンド (4)
    指定されたコンストラクタを呼び出して、この型の新規オブジェクトを作成します。コンストラクタメソッド ID は、クラス型のメンバーでなければなりません。

    インスタンスの作成は、指定されたスレッドで実行されます。インスタンスの作成は、指定されたスレッドがイベントにより中断されている場合にだけ実行されます。ターゲット VM がフロントエンドにより中断されている場合のメソッド呼び出しはサポートされていません。

    指定されたコンストラクタは、指定された引数リスト内の引数を使って呼び出されます。コンストラクタ呼び出しは同期的に行われます。そのため、呼び出されたメソッドがターゲット VM 内で復帰するまで、応答パケットは送信されません。戻り値 (たいていの場合、void 値) は応答パケットに含まれます。コンストラクタが例外をスローする場合、例外オブジェクト ID が応答パケット内に設定されます。そうでない場合、例外オブジェクト ID は null になります。

    プリミティブ引数の場合、引数値の型と引数の型は厳密に一致している必要があります。オブジェクト引数の場合、引数値の型から引数の型への拡張参照変換が存在し、かつ引数の型がロードされている必要があります。

    デフォルトでは、ターゲット VM 内のすべてのスレッドがメソッドの呼び出し中に再開されます (イベントまたはコマンドによって以前に中断されたスレッドの場合)。これは、いずれかのスレッドが、呼び出し先メソッドが必要とするモニターを所有している場合に、デッドロックが発生するのを防ぎます。ブレークポイントまたはほかのイベントが、呼び出し中に発生する可能性があります。ただし、この暗黙の再開処理が、ThreadReference の Resume コマンドの処理とまったく同じであることに注意してください。このため、スレッドの中断カウントが 1 より大きいと、呼び出し中もスレッドは中断状態のままになります。デフォルトでは、ターゲット VM 内のすべてのスレッドは、呼び出しの完了時に中断します (呼び出し前のスレッドの状態とは無関係)。

    options フィールドに INVOKE_SINGLE_THREADED ビットフラグを指定することにより、呼び出し中にほかのスレッドが再開しないようにできます。ただし、前述のようなデッドロックに対する保護や、デッドロックからの回復ができなくなるため、このオプションはよく注意して利用してください。指定されたスレッドだけが再開されます (前述したすべてのスレッドの場合と同様)。シングルスレッド呼び出しが完了すると、呼び出し元スレッドはふたたび中断されます。シングルスレッド呼び出し中に開始されたすべてのスレッドは、呼び出し完了時にも中断されません。

    ターゲット VM が呼び出し中に切断されても (たとえば、VirtualMachine の Dispose コマンドによる)、メソッド呼び出しは続行されます。

    出力データ
    classIDclazzクラス型 ID。 
    threadIDthreadコンストラクタを呼び出すスレッド。
    methodIDmethodID呼び出し先のコンストラクタ。
    intarguments 
    arguments 回の繰り返し:
    valuearg引数の値。 
    intoptionsコンストラクタ呼び出しのオプション 
    応答データ
    tagged-objectIDnewObject新規に作成されたオブジェクト、またはコンストラクタが例外をスローする場合は null。
    tagged-objectIDexceptionスローされた例外 (存在する場合)、または null。
    エラーデータ
    INVALID_CLASSclazz がクラスの ID ではない。 
    INVALID_OBJECTclazz が既知の ID ではない、またはオブジェクトパラメータの値が既知の ID ではない。
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
    VM_DEAD仮想マシンが動作していない。 

    ArrayType コマンドセット (4)

    NewInstance コマンド (1)
    この型の配列オブジェクトを、指定された長さで新規作成します。
    出力データ
    arrayTypeIDarrType新規インスタンスの配列型。
    intlength配列の長さ。 
    応答データ
    tagged-objectIDnewArray新規作成された配列オブジェクト。  
    エラーデータ
    INVALID_ARRAY配列が無効。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    VM_DEAD仮想マシンが動作していない。 

    InterfaceType コマンドセット (5)

    Method コマンドセット (6)

    LineTable コマンド (1)
    存在する場合、メソッドの行番号情報を返します。行テーブルは、ソース行番号を、行の初期コードインデックスにマッピングします。行テーブルは、コードインデックスにより (昇順で) 順序付けされます。RedefineClasses を使って新しいクラス定義がインストールされないかぎり、行番号は定数です。
    出力データ
    referenceTypeIDrefTypeクラス。 
    methodIDmethodIDメソッド。 
    応答データ
    longstartメソッドについて有効な最小のコードインデックス。>=0 または -1 (メソッドがネイティブの場合)
    longendメソッドについて有効な最大のコードインデックス。>=0 または -1 (メソッドがネイティブの場合)
    intlinesこのメソッドの行テーブル内のエントリ数。
    lines 回の繰り返し:
    longlineCodeIndex行の初期コードインデックス (開始 <= lineCodeIndex < 終了)
    intlineNumber行番号。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    VariableTable コマンド (2)
    メソッドの変数情報を返します。変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。インスタンスメソッドの場合、「this」参照がテーブルに含まれます。また、合成変数が存在する場合もあります。
    出力データ
    referenceTypeIDrefTypeクラス。 
    methodIDmethodIDメソッド。 
    応答データ
    intargCnt引数で使用されるフレーム内のワード数。8 バイトの引数は 2 ワードを使用し、その他の引数は 1 ワードを使用する。  
    intslots変数の数。 
    slots 回の繰り返し:
    longcodeIndex変数が可視状態にある最初のコードインデックス (符号なし)。length と一緒に使う。次のときにのみ、変数を取得または設定できる: 現在の codeIndex <= 現在のフレームコードインデックス < codeIndex + length  
    stringname変数の名前。 
    stringsignature変数型の JNI シグニチャー。 
    intlengthcodeIndex と一緒に使う符号なしの値。次のときにのみ、変数を取得または設定できる: 現在の codeIndex <= 現在のフレームコードインデックス < code index + length  
    intslotフレーム内の局所変数のインデックス 
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    ABSENT_INFORMATIONメソッドの変数情報がない。 
    VM_DEAD仮想マシンが動作していない。 
    Bytecodes コマンド (3)
    メソッドのバイトコード (Java™ 仮想マシン仕様で定義されている) を取得します。canGetBytecodes 権限が必要です (CapabilitiesNew を参照)。
    出力データ
    referenceTypeIDrefTypeクラス。 
    methodIDmethodIDメソッド。 
    応答データ
    intbytes 
    bytes 回の繰り返し:
    bytebytecodeJava バイトコード。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    NOT_IMPLEMENTEDターゲット仮想マシンがバイトコードの取得をサポートしていない。
    VM_DEAD仮想マシンが動作していない。 
    IsObsolete コマンド (4)
    メソッドがもう使用されていないものかどうかを判別します。RedefineClasses コマンドを使用してメソッドが同等ではないメソッドで置き換えられている場合、メソッドは使用されていません。双方のメソッドのバイトコードが同じ場合 (定数プールのインデックスを除く)、参照定数が等しい場合は、元のメソッドと再定義したメソッドが同等と見なされます。
    出力データ
    referenceTypeIDrefTypeクラス。 
    methodIDmethodIDメソッド。 
    応答データ
    booleanisObsoleteRedefineClasses コマンドによって、このメソッドが同等でないメソッドで置き換えられている場合は true。
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    NOT_IMPLEMENTEDターゲット仮想マシンがこのクエリーをサポートしていない。
    VM_DEAD仮想マシンが動作していない。 
    VariableTableWithGeneric コマンド (5)
    変数のジェネリックシグニチャーを含むメソッドの変数情報を返します。変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。インスタンスメソッドの場合、「this」参照がテーブルに含まれます。また、合成変数が存在する場合もあります。ジェネリクスシグニチャーについては、Java™ 仮想マシン仕様のシグニチャー属性のセクションを参照してください。これは JDWP バージョン 1.5 以降です。
    出力データ
    referenceTypeIDrefTypeクラス。 
    methodIDmethodIDメソッド。 
    応答データ
    intargCnt引数で使用されるフレーム内のワード数。8 バイトの引数は 2 ワードを使用し、その他の引数は 1 ワードを使用する。  
    intslots変数の数。 
    slots 回の繰り返し:
    longcodeIndex変数が可視状態にある最初のコードインデックス (符号なし)。length と一緒に使う。次のときにのみ、変数を取得または設定できる: 現在の codeIndex <= 現在のフレームコードインデックス < codeIndex + length  
    stringname変数の名前。 
    stringsignature変数型の JNI シグニチャー。 
    stringgenericSignature変数型のジェネリックシグニチャー、ない場合は空の文字列。
    intlengthcodeIndex と一緒に使う符号なしの値。次のときにのみ、変数を取得または設定できる: 現在の codeIndex <= 現在のフレームコードインデックス < code index + length  
    intslotフレーム内の局所変数のインデックス 
    エラーデータ
    INVALID_CLASSrefType が参照型の ID ではない。 
    INVALID_OBJECTrefType が既知の ID ではない。 
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    ABSENT_INFORMATIONメソッドの変数情報がない。 
    VM_DEAD仮想マシンが動作していない。 

    Field コマンドセット (8)

    ObjectReference コマンドセット (9)

    ReferenceType コマンド (1)
    オブジェクトの実行時の型を返します。実行時の型は、クラスまたは配列です。
    出力データ
    objectIDobjectオブジェクト ID 
    応答データ
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeID実行時の参照型。
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    VM_DEAD仮想マシンが動作していない。 
    GetValues コマンド (2)
    1 つまたは複数のインスタンスフィールドの値を返します。各フィールドは、オブジェクトの型のメンバーか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバーでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を取得できます。
    出力データ
    objectIDobjectオブジェクト ID 
    intfields取得する値の数 
    fields 回の繰り返し:
    fieldIDfieldID取得するフィールド。
    応答データ
    intvalues返される値の数。「fields」の取得する値の数と常に等しい。応答では、フィールドの値はコマンド内の対応する fieldID と同じ順序で順序付けされる。
    values 回の繰り返し:
    valuevalueフィールドの値 
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_FIELDID無効なフィールド。 
    VM_DEAD仮想マシンが動作していない。 
    SetValues コマンド (3)
    1 つまたは複数のインスタンスフィールドの値を設定します。各フィールドは、オブジェクトの型のメンバーか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバーでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を設定できます。プリミティブ値の場合、値の型とフィールドの型は正確に一致している必要があります。オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。
    出力データ
    objectIDobjectオブジェクト ID 
    intvalues設定するフィールドの数。 
    values 回の繰り返し:
    fieldIDfieldID設定するフィールド。 
    untagged-valuevalueフィールドに入力する値。 
    応答データ
    (なし)
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_FIELDID無効なフィールド。 
    VM_DEAD仮想マシンが動作していない。 
    MonitorInfo コマンド (5)
    オブジェクトのモニター情報を返します。VM 内のすべてのスレッドが中断されている必要があります。canGetMonitorInfo 権限が必要です (CapabilitiesNew を参照)。
    出力データ
    objectIDobjectオブジェクト ID 
    応答データ
    threadIDownerモニターの所有者、または null (現在は所有されていない場合)。
    intentryCountモニターが入力された回数。
    intwaitersモニターを待機しているスレッドの数、現在の所有者が存在しない場合は 0
    waiters 回の繰り返し:
    threadIDthreadこのモニターを待機しているスレッド。
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    InvokeMethod コマンド (6)
    インスタンスメソッドを呼び出します。メソッドは、オブジェクトの型のメンバーか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバーでなければなりません。アクセス制御は実行されません。このため、たとえば private メソッドを呼び出すことができます。

    メソッド呼び出しは、指定されたスレッドで実行されます。メソッド呼び出しは、指定されたスレッドがイベントにより中断されている場合にだけ実行されます。ターゲット VM がフロントエンドにより中断されている場合のメソッド呼び出しはサポートされていません。

    指定されたメソッドは、指定された引数リスト内の引数を使って呼び出されます。メソッド呼び出しは同期的に行われます。そのため、呼び出されたメソッドがターゲット VM 内で復帰するまで、応答パケットは送信されません。戻り値 (たいていの場合、void 値) は応答パケットに含まれます。呼び出されたメソッドが例外をスローする場合、例外オブジェクト ID が応答パケット内に設定されます。そうでない場合、例外オブジェクト ID は null になります。

    プリミティブ引数の場合、引数値の型と引数の型は厳密に一致している必要があります。オブジェクト引数の場合、引数値の型から引数の型への拡張参照変換が存在し、かつ引数の型がロードされている必要があります。

    デフォルトでは、ターゲット VM 内のすべてのスレッドがメソッドの呼び出し中に再開されます (イベントまたはコマンドによって以前に中断されたスレッドの場合)。これは、いずれかのスレッドが、呼び出し先メソッドが必要とするモニターを所有している場合に、デッドロックが発生するのを防ぎます。ブレークポイントまたはほかのイベントが、呼び出し中に発生する可能性があります。ただし、この暗黙の再開処理が、ThreadReference の Resume コマンドの処理とまったく同じであることに注意してください。このため、スレッドの中断カウントが 1 より大きいと、呼び出し中もスレッドは中断状態のままになります。デフォルトでは、ターゲット VM 内のすべてのスレッドは、呼び出しの完了時に中断します (呼び出し前のスレッドの状態とは無関係)。

    options フィールドに INVOKE_SINGLE_THREADED ビットフラグを指定することにより、呼び出し中にほかのスレッドが再開しないようにできます。ただし、前述のようなデッドロックに対する保護や、デッドロックからの回復ができなくなるため、このオプションはよく注意して利用してください。指定されたスレッドだけが再開されます (前述したすべてのスレッドの場合と同様)。シングルスレッド呼び出しが完了すると、呼び出し元スレッドはふたたび中断されます。シングルスレッド呼び出し中に開始されたすべてのスレッドは、呼び出し完了時にも中断されません。

    ターゲット VM が呼び出し中に切断されても (たとえば、VirtualMachine の Dispose コマンドによる)、メソッド呼び出しは続行されます。

    出力データ
    objectIDobjectオブジェクト ID 
    threadIDthread呼び出しを行うスレッド。 
    classIDclazzクラスの型。
    methodIDmethodID呼び出すメソッド。 
    intarguments引数の数。
    arguments 回の繰り返し:
    valuearg引数の値。 
    intoptions呼び出しオプション 
    応答データ
    valuereturnValue戻り値、または null (例外がスローされた場合)。
    tagged-objectIDexceptionスローされた例外 (存在する場合)。
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_CLASSclazz が参照型の ID ではない。
    INVALID_METHODIDmethodID がメソッドの ID ではない。 
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
    VM_DEAD仮想マシンが動作していない。 
    DisableCollection コマンド (7)
    指定されたオブジェクトのガベージコレクションが実行されないようにします。デフォルトでは、バックエンド応答内のすべてのオブジェクトは、ターゲット VM の実行中にいつでもガベージコレクトが可能です。このコマンドを呼び出すと、オブジェクトがガベージコレクトされないことが保証されます。ガベージコレクションを再度有効にするには、EnableCollection コマンドを使用します。

    ターゲット VM の中断中は、すべてのスレッドが中断しているため、ガベージコレクションは行われません。中断中に変数、フィールド、および配列を調べるという一般的な操作の場合は、明示的にガベージコレクションを無効にしなくても安全です。

    このメソッドを使用すると、ターゲット VM 内のガベージコレクションのパターンが変わるため、アプリケーションの動作がデバッガ実行時とデバッガ非実行時とで異なる結果になる可能性があります。そのため、このメソッドの使用には慎重を期してください。

    出力データ
    objectIDobjectオブジェクト ID 
    応答データ
    (なし)
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    VM_DEAD仮想マシンが動作していない。 
    EnableCollection コマンド (8)
    このオブジェクトのガベージコレクションを許可します。デフォルトでは、JDWP により返されるすべてのオブジェクトは、ターゲット VM でアクセス不可能になるため、ガベージコレクトが可能です。このコマンドの呼び出しが必要になるのは、DisableCollection コマンドを使ってガベージコレクションを無効にした場合だけです。
    出力データ
    objectIDobjectオブジェクト ID 
    応答データ
    (なし)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    IsCollected コマンド (9)
    オブジェクトが、ターゲット VM 内でガベージコレクトされたかどうかを判定します。
    出力データ
    objectIDobjectオブジェクト ID 
    応答データ
    booleanisCollectedオブジェクトがガベージコレクトされた場合は true、そうでない場合は false
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    VM_DEAD仮想マシンが動作していない。 
    ReferringObjects コマンド (10)
    このオブジェクトを直接参照するオブジェクトを返します。ガベージコレクト目的で到達可能なオブジェクトだけが返されます。オブジェクトは、その他の方法でも参照可能です。たとえばスタックフレーム内でローカル変数を使用する方法、JNI グローバル参照を使用する方法などがあります。このコマンドでは、このような、オブジェクトを参照しないオブジェクトは返されません。

    これは JDWP バージョン 1.6 以降。canGetInstanceInfo 権限が必要です (CapabilitiesNew を参照)。

    出力データ
    objectIDobjectオブジェクト ID 
    intmaxReferrers返される参照オブジェクトの最大数。負でない数値。ゼロの場合、すべての参照オブジェクトが返される。
    応答データ
    intreferringObjectsあとに続くオブジェクトの数。
    referringObjects 回の繰り返し:
    tagged-objectIDinstanceこのオブジェクトを参照するオブジェクト。
    エラーデータ
    INVALID_OBJECTオブジェクトが既知の ID ではない。
    ILLEGAL_ARGUMENTmaxReferrers がゼロより小さい。
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 

    StringReference コマンドセット (10)

    Value コマンド (1)
    文字列に含まれる文字を返します。
    出力データ
    objectIDstringObjectString オブジェクトの ID。
    応答データ
    stringstringValue文字列の値の UTF-8 表現。
    エラーデータ
    INVALID_STRING文字列が無効。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    VM_DEAD仮想マシンが動作していない。 

    ThreadReference コマンドセット (11)

    Name コマンド (1)
    スレッド名を返します。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    stringthreadNameスレッドの名前。
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Suspend コマンド (2)
    スレッドを中断します。

    java.lang.Thread.suspend() とは異なり、仮想マシンと個々のスレッド両方の中断がカウントされます。スレッドを再実行する前に、中断された回数と同じ数の再開が行われなければなりません。

    コマンドを使って単一のスレッドを中断することには、java.lang.Thread.suspend() の場合と同様の危険があります。中断されたスレッドが実行中の別のスレッドに必要なモニターを保持している場合、ターゲット VM でデッドロックが発生する可能性があります (少なくとも、中断されたスレッドが再開されるまでの間)。

    中断されたスレッドは、前述の JDI 再開メソッドの 1 つを使って再開されるまで中断状態を維持することが保証されます。ターゲット VM 内のアプリケーションが、中断したスレッドを {@link java.lang.Thread#resume} を使って再開することはできません。

    これにより、スレッドのステータスが変化することはない点に注意してください (ThreadStatus を参照)。たとえば、このスレッドが実行中だった場合、ほかのスレッドからは依然として実行中に見えます。

    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Resume コマンド (3)
    指定されたスレッドの実行を再開します。以前にこのスレッドがフロントエンドにより中断されたことがない場合には、このコマンドを呼び出しても効果はありません。それ以外の場合、このスレッドについて保留中の中断のカウントが減少します。カウントが 0 まで減少すると、スレッドは実行を継続します。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Status コマンド (4)
    スレッドの現在のステータスを返します。スレッドステータスの応答は、最後に実行されていた時点でのスレッドステータスを示します。中断ステータスは、スレッドの中断に関する情報 (存在する場合) を提供します。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    intthreadStatusスレッドステータスコードの 1 つ。JDWP.ThreadStatus を参照
    intsuspendStatus中断ステータスコードの 1 つ。JDWP.SuspendStatus を参照
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    ThreadGroup コマンド (5)
    指定されたスレッドを含むスレッドグループを返します。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    threadGroupIDgroupこのスレッドのスレッドグループ。  
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Frames コマンド (6)
    中断されたスレッドの現在の呼び出しスタックを返します。フレームシーケンスは、現在実行中のフレームから始まり、次にその呼び出し元のフレーム、と続きます。スレッドは中断されていなければならず、返される frameID は、スレッドが中断されている間だけ有効です。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    intstartFrame取得する最初のフレームのインデックス。
    intlength取得するフレームのカウント (-1 は「残りすべて」の意味)。  
    応答データ
    intframes取得されたフレーム数
    frames 回の繰り返し:
    frameIDframeIDこのフレームの ID。  
    locationlocationこのフレームの現在位置
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    FrameCount コマンド (7)
    このスレッドスタックのフレームカウントを返します。スレッドは中断されていなければならず、返されるカウントはスレッドが中断されている間だけ有効です。スレッドが中断されていない場合は、JDWP.Error.errorThreadNotSuspended を返します。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    intframeCountこのスレッドスタックのフレームカウント。  
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    OwnedMonitors コマンド (8)
    オブジェクトのモニターがこのスレッドから入った、というオブジェクトを返します。スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。canGetOwnedMonitorInfo 権限が必要です (CapabilitiesNew を参照)。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    intowned所有するモニターの数 
    owned 回の繰り返し:
    tagged-objectIDmonitor所有するモニター 
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    CurrentContendedMonitor コマンド (9)
    このスレッドが待機中のオブジェクトを返します (存在する場合)。スレッドは、モニターに入るのを待機しているか、java.lang.Object.wait メソッドを使って別のスレッドが notify メソッドを呼び出すのを待機している可能性があります。スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。canGetCurrentContendedMonitor 権限が必要です (CapabilitiesNew を参照)。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    tagged-objectIDmonitor競合するモニター、または null (競合するモニターが現在は存在しない場合)。  
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    Stop コマンド (10)
    非同期の例外をスローしてスレッドを停止します (java.lang.Thread.stop を使用した場合と同様)。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    objectIDthrowable非同期の例外。このオブジェクトは、java.lang.Throwable のインスタンスまたはサブクラスでなければならない
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTスレッドが既知の ID ではない、または非同期の例外がガベージコレクトされている。
    VM_DEAD仮想マシンが動作していない。 
    Interrupt コマンド (11)
    スレッドに対し割り込みを実行します (java.lang.Thread.interrupt を実行した場合と同様)。
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    SuspendCount コマンド (12)
    このスレッドの中断カウントを取得します。中断カウントは、スレッドレベルまたは VM レベルの中断コマンドによりスレッドが中断された回数 (対応する再開コマンドが実行されたものは除く) です
    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    intsuspendCountこのスレッドの未処理の中断の回数。  
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    OwnedMonitorsStackDepthInfo コマンド (13)
    スレッドの所有するモニターオブジェクト、およびモニターが取得されたスタック深度を返します。実装がスタック深度を判別できない場合 (JNI MonitorEnter により取得されたモニターなど) は、スタック深度 -1 が返されます。スレッドは中断されている必要があります。返される情報が有効なのは、スレッドが中断されている場合だけです。canGetMonitorFrameInfo 権限が必要です (CapabilitiesNew を参照)。

    これは JDWP バージョン 1.6 以降。

    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    応答データ
    intowned所有するモニターの数 
    owned 回の繰り返し:
    tagged-objectIDmonitor所有するモニター 
    intstack_depthモニターが取得されたスタック深度の位置
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    ForceEarlyReturn コマンド (14)
    return 文に到達する前に強制的にメソッドを復帰させます。

    早期復帰するメソッドを「被呼び出しメソッド」と呼びます。被呼び出しメソッドは、Java™ 仮想マシン仕様のフレームのセクションに定義されているとおり、このコマンドの受信時に、指定されたスレッドの現在のメソッドになります。

    指定されるスレッドは、中断されている必要があります。メソッドの復帰は、Java プログラミング言語のコードの実行がこのスレッド上で再開されたときに行われます。このコマンドが送信されてからスレッドの実行が再開されるまでの間、スタックの状態は未定義です。

    被呼び出しメソッドでは、これ以上の命令は実行されません。特に、最終的にブロックは実行されません。注:これにより、アプリケーション内で整合性のない状態が発生することがあります。

    被呼び出しメソッドを呼び出すことによって獲得されたロック (これが synchronized メソッドの場合) と、被呼び出しメソッド内の synchronized ブロックに入ることによって獲得されたロックは解除されます。注:これは、JNI ロックや java.util.concurrent.locks ロックには適用されません。

    通常復帰の場合と同様に、MethodExit などのイベントが生成されます。

    被呼び出しメソッドは、非ネイティブの Java プログラミング言語のメソッドとします。スタック上にフレームが 1 つだけある状態でスレッドへの強制復帰を行なった場合、スレッドが再開時に終了します。

    void メソッドの場合、値は void 値である必要があります。プリミティブ値を返すメソッドの場合、値の型と戻り値の型は正確に一致している必要があります。オブジェクト値の場合、値型から戻り値の型への広範な参照変換が存在し、かつ戻り値の型がロードされている必要があります。

    これは JDWP バージョン 1.6 以降。canForceEarlyReturn 権限が必要です (CapabilitiesNew を参照)。

    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    valuevalue返す値。  
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTスレッドまたは値が既知の ID ではない。
    THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
    THREAD_NOT_ALIVEスレッドが開始されていないか、すでに終了している。
    OPAQUE_FRAMEネイティブメソッドに対応するフレームからの早期復帰が試みられた。または、実装がこのフレーム上でこの機能を提供できない。
    NO_MORE_FRAMES呼び出しスタックに Java または JNI フレームはもうない。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    TYPE_MISMATCH値の型がメソッドの戻り値に適合しない。
    VM_DEAD仮想マシンが動作していない。 

    ThreadGroupReference コマンドセット (12)

    Name コマンド (1)
    スレッドグループの名前を返します。
    出力データ
    threadGroupIDgroupスレッドグループのオブジェクト ID。 
    応答データ
    stringgroupNameスレッドグループの名前。
    エラーデータ
    INVALID_THREAD_GROUPスレッドグループが無効。 
    INVALID_OBJECTgroup が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Parent コマンド (2)
    指定されたスレッドグループを含むスレッドグループ (存在する場合) を返します。
    出力データ
    threadGroupIDgroupスレッドグループのオブジェクト ID。 
    応答データ
    threadGroupIDparentGroup親スレッドグループオブジェクト、または null (指定されたスレッドグループがトップレベルのスレッドグループの場合)
    エラーデータ
    INVALID_THREAD_GROUPスレッドグループが無効。 
    INVALID_OBJECTgroup が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 
    Children コマンド (3)
    このスレッドグループに直接含まれるライブスレッドおよびアクティブなスレッドグループを返します。子スレッドグループ内のスレッドおよびスレッドグループは、返されません。スレッドは開始されると、停止されるまで、活動状態にあります。アクティブな ThreadGroup については、java.lang.ThreadGroup を参照してください。
    出力データ
    threadGroupIDgroupスレッドグループのオブジェクト ID。 
    応答データ
    intchildThreads子スレッドの数。  
    childThreads 回の繰り返し:
    threadIDchildThread直接の子スレッド ID。
    intchildGroups子スレッドグループの数。  
    childGroups 回の繰り返し:
    threadGroupIDchildGroup直接の子スレッドグループの ID。
    エラーデータ
    INVALID_THREAD_GROUPスレッドグループが無効。 
    INVALID_OBJECTgroup が既知の ID ではない。 
    VM_DEAD仮想マシンが動作していない。 

    ArrayReference コマンドセット (13)

    Length コマンド (1)
    指定された配列内のコンポーネントの数を返します。
    出力データ
    arrayIDarrayObject配列のオブジェクト ID。 
    応答データ
    intarrayLength配列の長さ。 
    エラーデータ
    INVALID_OBJECTarrayObject が既知の ID ではない。 
    INVALID_ARRAY配列が無効。 
    VM_DEAD仮想マシンが動作していない。 
    GetValues コマンド (2)
    配列コンポーネントの範囲を返します。指定された範囲は、配列の境界内にある必要があります。
    出力データ
    arrayIDarrayObject配列のオブジェクト ID。 
    intfirstIndex取得する最初のインデックス。
    intlength取得するコンポーネントの数。
    応答データ
    arrayregionvalues取得した値。値がオブジェクトの場合、タグ付けされた値になる。それ以外の場合は、タグ付けされていない値になる
    エラーデータ
    INVALID_LENGTHインデックスがこの配列の最後を越えている場合。 
    INVALID_OBJECTarrayObject が既知の ID ではない。 
    INVALID_ARRAY配列が無効。 
    VM_DEAD仮想マシンが動作していない。 
    SetValues コマンド (3)
    配列コンポーネントの範囲を設定します。指定された範囲は、配列の境界内にある必要があります。プリミティブ値の場合、各値の型と配列コンポーネントの型は正確に一致している必要があります。オブジェクト値の場合、値型から配列コンポーネント型への広範な参照変換が存在し、かつ配列コンポーネント型がロードされている必要があります。
    出力データ
    arrayIDarrayObject配列のオブジェクト ID。 
    intfirstIndex設定する最初のインデックス。
    intvalues設定する値の数。  
    values 回の繰り返し:
    untagged-valuevalue設定する値。  
    応答データ
    (なし)
    エラーデータ
    INVALID_LENGTHインデックスがこの配列の最後を越えている場合。 
    INVALID_OBJECTarrayObject が既知の ID ではない。 
    INVALID_ARRAY配列が無効。 
    VM_DEAD仮想マシンが動作していない。 

    ClassLoaderReference コマンドセット (14)

    VisibleClasses コマンド (1)
    このクラスローダーに対してロードするよう要求されたすべてのクラスのリストを返します。このクラスローダーは、返されたリスト内の各クラスの起動クラスローダーと見なされます。このリストには、このローダーにより定義された各参照型、およびこのクラスローダーにより別のクラスローダーにロードが委譲されたすべての型が含まれます。

    可視クラスリストには、型の名前空間に関して、便利な特性があります。特定の型の名前は、リスト中に最高 1 回しか出現しません。このクラスローダーにより定義されたクラスの型名を使って宣言されたフィールドまたは変数はそれぞれ、その単一の型に解決される必要があります。

    返されるリストの順番は保証されていません。

    出力データ
    classLoaderIDclassLoaderObjectクラスローダーのオブジェクト ID。
    応答データ
    intclasses可視クラスの数。  
    classes 回の繰り返し:
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeIDこのクラスローダーに対する可視クラス。
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_CLASS_LOADERクラスローダーが無効。
    VM_DEAD仮想マシンが動作していない。 

    EventRequest コマンドセット (15)

    Set コマンド (1)
    イベント要求を設定します。この要求で指定されたイベントが発生すると、ターゲット VM からイベントが送信されます。要求されていないイベントが発生した場合、イベントはターゲット VM から送信されません。これに対する 2 つの例外は、VM 開始イベントと VM 終了イベントです。これらは自動的に生成されるイベントです。詳細については、Composite コマンドを参照してください。
    出力データ
    byteeventKind要求するイベントの種類。要求できるイベントの全リストは、JDWP.EventKind を参照。要求するために権限が必要となるイベントもある。  
    bytesuspendPolicyこのイベントの発生時にどのスレッドを中断するか。イベントおよびコマンド応答の順序は、スレッドが中断および再開される順序を正確に反映するので要注意。たとえば、VM を中断するイベントの発生前に、VM 全体の再開が処理される場合、その再開コマンドへの応答は、中断イベントより前にトランスポートに書き込まれる。
    intmodifiers生成されるイベント数の制御に使用される制約。修飾子は、イベントがイベントキューに配置される前に満たす必要のある追加の条件を指定する。このコレクションに指定された順序で各修飾子をイベントに適用することにより、イベントはフィルタにかけられる。すべての修飾子の条件を満たすイベントだけがレポートされる。0 の値は、要求に修飾子が存在しないことを意味する。

    ターゲット VM からデバッガ VM に送信されるイベントトラフィックの量を減らすことにより、フィルタ処理でデバッガのパフォーマンスを劇的に向上させることが可能。  

    modifiers 回の繰り返し:
    bytemodKind修飾子の種類
    Case Count - modKind が 1 の場合: 要求されたイベントが報告される回数を最大で、指定された回数発生したあと 1 回に制限する。このフィルタが最初に count - 1 回に達する時点までは、イベントはレポートされない。1 回かぎりのイベントを要求するには、このメソッドをカウント 1 で呼び出せばよい。

    カウントが 0 に達したあとは、この要求内の続くフィルタが適用される。それらのフィルタがいずれもイベントを抑制しない場合、そのイベントはレポートされる。そうでない場合、イベントはレポートされない。どちらの場合にも、この要求に対して、それ以降のイベントがレポートされることはない。この修飾子は、どんな種類のイベントにも使用できる。

    intcountイベントを発生させる前のカウント。1 回かぎりのイベントで使用する。
    Case Conditional - modKind が 2 の場合: 式による条件
    intexprID将来の使用のために予約済み
    Case ThreadOnly - modKind が 3 の場合: レポートされるイベントを、指定されたスレッド内のものに制限する。この修飾子は、クラスのアンロードを除く、すべての種類のイベントに使用できる。  
    threadIDthread要求されたスレッド
    Case ClassOnly - modKind が 4 の場合: クラス準備イベントの場合に、この要求で生成されたイベントを制限して、指定された参照型および任意のサブタイプの準備となるようにする。モニター待機およびモニター待機終了イベントの場合、この要求で生成されるイベントを、指定された参照型またはその任意のサブタイプであるモニターオブジェクトを保持するイベントに限定する。それ以外のイベントの場合、この要求で生成されるイベントを、指定された参照型またはその任意のサブタイプ内で発生したものに限定する。イベントは、指定された参照型に安全にキャストできる参照型の中であれば、任意の位置で生成される。この修飾子は、クラスのアンロード、スレッド開始、およびスレッド終了を除く、すべての種類のイベントで使用できる。  
    referenceTypeIDclazz要求されたクラス
    Case ClassMatch - modKind が 5 の場合: レポートされるイベントを、指定された限定的な正規表現に名前が一致するクラスのイベントに限定する。クラス準備イベントの場合、準備されたクラス名で判定される。クラスのアンロードイベントの場合、アンロードされたクラス名で判定される。モニター待機および待機終了イベントの場合、モニターオブジェクトのクラス名が一致する。それ以外のイベントの場合、イベントが発生した位置のクラス名で判定される。この修飾子は、スレッド開始およびスレッド終了を除く、すべての種類のイベントで使用できる。  
    stringclassPattern要求されたクラスパターン。マッチ条件は、指定されたクラスパターンに正確に一致する場合と、パターンの最初または最後が「*」である場合 (たとえば、「*.Foo」、「java.*」) に限定される。  
    Case ClassExclude - modKind が 6 の場合: レポートされるイベントを、指定された限定的な正規表現に名前が一致しないクラスのイベントに限定する。クラス準備イベントの場合、準備されたクラス名で判定される。クラスのアンロードイベントの場合、アンロードされたクラス名で判定される。モニター待機および待機終了イベントの場合、モニターオブジェクトのクラス名が一致する。それ以外のイベントの場合、イベントが発生した位置のクラス名で判定される。この修飾子は、スレッド開始およびスレッド終了を除く、すべての種類のイベントで使用できる。  
    stringclassPattern許可されないクラスパターン。マッチ条件は、指定されたクラスパターンに正確に一致する場合と、パターンの最初または最後が「*」である場合 (たとえば、「*.Foo」、「java.*」) に限定される。  
    Case LocationOnly - modKind が 7 の場合: レポートされるイベントを、指定された場所で発生するイベントに限定する。この修飾子は、ブレークポイント、フィールドアクセス、フィールド変更、ステップ、および例外の各イベントで使用できる。  
    locationloc要求される場所
    Case ExceptionOnly - modKind が 8 の場合: レポートされる例外を、クラスと、それがキャッチされるかどうかを基準にして限定する。この修飾子は、例外イベントでのみ使用できる。  
    referenceTypeIDexceptionOrNullレポートされる例外。null (0) は、すべての種類の例外をレポートするという意味。null 以外の場合は、レポートされる例外イベントを、指定された型またはその任意のサブタイプに限定する。  
    booleancaughtキャッチされた例外をレポートする
    booleanuncaughtキャッチされなかった例外をレポートする。例外がキャッチされたかどうかは、例外がスローされた時点でいつも判断できるとはかぎらない。詳細は、複合イベントの例外イベントのキャッチ位置に関する説明を参照。  
    Case FieldOnly - modKind が 9 の場合: レポートされるイベントを、指定されたフィールドで発生するイベントに限定する。この修飾子は、フィールドアクセスおよびフィールド変更イベントでのみ使用できる。  
    referenceTypeIDdeclaringフィールドが宣言されている型。
    fieldIDfieldID要求されたフィールド
    Case Step - modKind が 10 の場合: レポートされるステップイベントを、深さおよびサイズの制限を満たすものに限定する。この修飾子は、ステップイベントでのみ使用できる。  
    threadIDthreadステップ実行を行うスレッド
    intsize各ステップのサイズ。JDWP.StepSize を参照
    intdepth相対呼び出しスタックの制限。JDWP.StepDepth を参照
    Case InstanceOnly - modKind が 11 の場合: レポートされるイベントを、指定されたオブジェクトがアクティブな「this」オブジェクトであるイベントに限定する。static メソッドの場合のマッチ条件は、null オブジェクト。この修飾子は、クラス準備、クラスのアンロード、スレッド開始、およびスレッド終了を除く、すべての種類のイベントで使用できる。この修飾子は、JDWP バージョン 1.4 で導入された。
    objectIDinstance要求された「this」オブジェクト
    Case SourceNameMatch - modKind が 12 の場合: レポートされるクラス準備イベントを、指定された限定的な正規表現に一致するソース名を持つ参照型に限定する。ソース名は、参照型の SourceDebugExtension により決定される。この修飾子は、クラス準備イベントでのみ使用できる。これは JDWP バージョン 1.6 以降。canUseSourceNameFilters 権限が必要 (CapabilitiesNew を参照)。
    stringsourceNamePattern要求されたソース名パターン。マッチ条件は、指定されたパターンに正確に一致する場合と、パターンの最初または最後が「*」である場合 (たとえば、「*.Foo」、「java.*」) に限定される。  
    応答データ
    intrequestID作成された要求の ID
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_CLASS無効なクラス。
    INVALID_STRING文字列が無効。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_COUNTカウントが無効。
    INVALID_FIELDID無効なフィールド。 
    INVALID_METHODID無効なメソッド。
    INVALID_LOCATION無効な位置。
    INVALID_EVENT_TYPE指定されたイベントタイプの ID が認識されない。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 
    Clear コマンド (2)
    イベント要求を解除します。解除できるイベントの全リストは、JDWP.EventKind を参照してください。指定したイベントの種類および requestID に一致するイベント要求だけが解除されます。一致するイベント要求が存在しない場合、コマンドは無操作で、エラーになりません。自動的に生成されるイベントには、対応するイベント要求がないため、このコマンドで解除されない場合があります。
    出力データ
    byteeventKind解除するイベントタイプ
    intrequestID解除する要求の ID
    応答データ
    (なし)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 
    INVALID_EVENT_TYPE指定されたイベントタイプの ID が認識されない。 
    ClearAllBreakpoints コマンド (3)
    設定されているすべてのブレークポイントを削除します。設定されているブレークポイントが存在しない場合は無操作です。
    出力データ
    (なし)
    応答データ
    (なし)
    エラーデータ
    VM_DEAD仮想マシンが動作していない。 

    StackFrame コマンドセット (16)

    GetValues コマンド (1)
    指定されたフレーム内の 1 つまたは複数の局所変数の値を返します。各変数は、フレームのコードインデックスで可視である必要があります。局所変数の情報が利用できなくても、フロントエンドが正しい局所変数インデックスを判別できる場合は、値の取得が可能です。一般に、局所変数テーブルの情報にアクセスしなくても、メソッドシグニチャーからメソッド引数について変数のインデックスを判別できます。
    出力データ
    threadIDthreadフレームのスレッド。  
    frameIDframeフレーム ID。 
    intslots取得する値の数。  
    slots 回の繰り返し:
    intslotフレーム内の局所変数のインデックス。  
    bytesigbyte変数の型を識別するタグ
    応答データ
    intvalues取得された値の数。slots の取得する値の数と常に等しい。
    values 回の繰り返し:
    valueslotValue局所変数の値。  
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_FRAMEID無効な jframeID。 
    INVALID_SLOT無効なスロット。
    VM_DEAD仮想マシンが動作していない。 
    SetValues コマンド (2)
    1 つまたは複数の局所変数の値を設定します。各変数は、現在のフレームコードインデックスで可視である必要があります。プリミティブ値の場合、値の型と変数の型は正確に一致している必要があります。オブジェクト値の場合、値の型から変数の型への広範な参照変換が存在し、かつ変数の型がロードされている必要があります。

    局所変数の情報を利用できなくても、フロントエンドが正しい局所変数インデックスを判別できる場合は、値の設定が可能です。一般に、局所変数テーブルの情報にアクセスしなくても、メソッドシグニチャーからメソッド引数について変数のインデックスを判別できます。

    出力データ
    threadIDthreadフレームのスレッド。  
    frameIDframeフレーム ID。 
    intslotValues設定する値の数。  
    slotValues 回の繰り返し:
    intslotスロット ID。
    valueslotValue設定する値。  
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_FRAMEID無効な jframeID。 
    VM_DEAD仮想マシンが動作していない。 
    ThisObject コマンド (3)
    このフレームについての「this」参照の値を返します。フレームのメソッドが static またはネイティブの場合、応答には null オブジェクト参照が含まれます。
    出力データ
    threadIDthreadフレームのスレッド。  
    frameIDframeフレーム ID。 
    応答データ
    tagged-objectIDobjectThisこのフレームについての「this」オブジェクト。  
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    INVALID_FRAMEID無効な jframeID。 
    VM_DEAD仮想マシンが動作していない。 
    PopFrames コマンド (4)
    スレッドスタックのいちばん上のスタックフレームを「フレーム」までポップします。このコマンドを実行するには、スレッドが中断されている必要があります。いちばん上のスタックフレームは破棄され、「フレーム」の前のスタックフレームが現在のフレームになります。オペランドスタックは回復します。引数が再度追加され、呼び出しが invokestatic ではなかった場合、objectref も再度追加されます。Java 仮想マシンプログラムカウンタは、呼び出し命令の操作コードに戻されます。

    これは JDWP バージョン 1.4 以降です。canPopFrames 権限が必要です (CapabilitiesNew を参照)。

    出力データ
    threadIDthreadスレッドのオブジェクト ID。 
    frameIDframeフレーム ID。 
    応答データ
    (なし)
    エラーデータ
    INVALID_THREAD渡されたスレッドが null、有効でないスレッド、または終了している。 
    INVALID_OBJECTthread が既知の ID ではない。 
    INVALID_FRAMEID無効な jframeID。 
    THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
    NO_MORE_FRAMES呼び出しスタックに Java または JNI フレームはもうない。 
    INVALID_FRAMEID無効な jframeID。 
    NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
    VM_DEAD仮想マシンが動作していない。 

    ClassObjectReference コマンドセット (17)

    ReflectedType コマンド (1)
    このクラスオブジェクトによりリフレクトされた参照型を返します。
    出力データ
    classObjectIDclassObjectクラスオブジェクト。  
    応答データ
    byterefTypeTagあとに続く参照型の種類。  
    referenceTypeIDtypeIDリフレクトされた参照型
    エラーデータ
    INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージコレクトされた。 
    VM_DEAD仮想マシンが動作していない。 

    Event コマンドセット (64)

    Composite コマンド (100)
    ターゲット VM では、特定の時点でいくつかのイベントが発生します。たとえば、特定の場所に対して複数のブレークポイント要求が存在するか、ブレークポイント要求と同じ場所に対してステップ実行を行う場合を考えてみましょう。これらのイベントは、複合イベントとしてまとめて配信されます。一貫性を保つため、レポートするイベントが 1 つだけであっても、イベントの配信には常に複合イベントが使用されます。

    複合イベントとしてグループ化されるイベントには、次の方法で制限が課されます。

    VM 開始イベントと VM 終了イベントは自動的に生成されるイベントです。つまり、EventRequest.Set コマンドを使ってこれらのイベントを要求する必要はありません。VM 開始イベントは、VM の初期化の完了を示します。VM 終了イベントは、VM の終了を示します。自動的に生成されるイベントが発生したときにデバッガが接続されている場合、そのイベントはターゲット VM から送信されます。自動的に生成されるイベントは、EventRequest.Set コマンドを使って要求することもできます。したがって、イベントの発生時に同じイベントの種類の複数のイベントがターゲット VM から送信されます。自動的に生成されるイベントは、イベントデータの requestID フィールドが 0 に設定された状態で送信されます。イベントデータの suspendPolicy フィールドの値は、イベントによって異なります。自動的に生成される VM 開始イベントの場合、suspendPolicy の値は定義されないため、実装固有または構成固有になります。たとえば、Sun の実装では、suspendPolicy は起動時の JDWP エージェントのオプションとして指定されます。自動的に生成される VM 終了イベントの suspendPolicy は NONE に設定されます。

    イベントデータ
    bytesuspendPolicyこの複合イベントによりどのスレッドが中断されるか
    inteventsセット内のイベント。
    events 回の繰り返し:
    byteeventKindイベントの種類のセレクタ
    Case VMStart - eventKind が JDWP.EventKind.VM_START の場合: ターゲット VM の初期化の通知。このイベントは、メインスレッドの開始前、かつアプリケーションコードの実行前に受け取られる。このイベントが発生する前に、大量のシステムコードが実行され、多数のシステムクラスがロードされる。このイベントは、明示的に要求されていなくても、常にターゲット VM により生成される。
    intrequestIDイベントを生成させた要求 (イベントが自動的に生成された場合は 0)。
    threadIDthread初期スレッド
    Case SingleStep - eventKind が JDWP.EventKind.SINGLE_STEP の場合: ターゲット VM のステップ完了の通知。その位置のコードが実行される前に、ステップイベントが生成される。  
    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadステップ実行の行われたスレッド
    locationlocationステップ実行の行われた位置
    Case Breakpoint - eventKind が JDWP.EventKind.BREAKPOINT の場合: ターゲット VM のブレークポイントの通知。その位置のコードが実行される前に、ブレークポイントイベントが生成される。  
    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadブレークポイントをヒットしたスレッド
    locationlocationヒットした位置
    Case MethodEntry - eventKind が JDWP.EventKind.METHOD_ENTRY の場合: ターゲット VM のメソッド呼び出しの通知。このイベントは、呼び出されたメソッド内のコードが実行される前に生成される。メソッドエントリイベントは、ネイティブおよび非ネイティブのメソッドの両方で生成される。

    いくつかの VM では、メソッドがスレッドの初期化の一部として呼び出された場合、特定のスレッドのスレッド開始イベントが発生する前に、そのスレッドについてのメソッドエントリイベントが発生することがある。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadメソッドに入ったスレッド
    locationlocationメソッド内の初期実行可能ファイルの位置。
    Case MethodExit - eventKind が JDWP.EventKind.METHOD_EXIT の場合: ターゲット VM のメソッド復帰の通知。このイベントは、メソッド内のすべてのコードが実行されたあとで生成される。ただし、このイベントの位置は、メソッド内で最後に実行された位置になる。メソッド終了イベントは、ネイティブおよび非ネイティブのメソッドの両方で生成される。メソッドが例外をスローして終了した場合、メソッド終了イベントは生成されない。  
    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadメソッドから出たスレッド 
    locationlocation終了の位置 
    Case MethodExitWithReturnValue - eventKind が JDWP.EventKind.METHOD_EXIT_WITH_RETURN_VALUE の場合: ターゲット VM のメソッド復帰の通知。このイベントは、メソッド内のすべてのコードが実行されたあとで生成される。ただし、このイベントの位置は、メソッド内で最後に実行された位置になる。メソッド終了イベントは、ネイティブおよび非ネイティブのメソッドの両方で生成される。メソッドが例外をスローして終了した場合、メソッド終了イベントは生成されない。

    これは JDWP バージョン 1.6 以降。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadメソッドから出たスレッド 
    locationlocation終了の位置 
    valuevalueメソッドから返される値
    Case MonitorContendedEnter - eventKind が JDWP.EventKind.MONITOR_CONTENDED_ENTER の場合: ターゲット VM 内のスレッドが別のスレッドによってすでに獲得されているモニターに入ろうとする際の通知。canRequestMonitorEvents 権限が必要 (CapabilitiesNew を参照)。

    これは JDWP バージョン 1.6 以降。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadモニターに入ろうとしているスレッド
    tagged-objectIDobjectモニターオブジェクト参照 
    locationlocation競合するモニター開始の位置 
    Case MonitorContendedEntered - eventKind が JDWP.EventKind.MONITOR_CONTENDED_ENTERED の場合: ターゲット VM 内のスレッドが、別のスレッドによって獲得されたモニターが解放されるのを待ってモニターに入るときに送信される通知。canRequestMonitorEvents 権限が必要 (CapabilitiesNew を参照)。

    これは JDWP バージョン 1.6 以降。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadモニターに入ったスレッド
    tagged-objectIDobjectモニターオブジェクト参照 
    locationlocation競合するモニター開始の位置 
    Case MonitorWait - eventKind が JDWP.EventKind.MONITOR_WAIT の場合: モニターオブジェクト上で待機しようとしているスレッドの通知。canRequestMonitorEvents 権限が必要 (CapabilitiesNew を参照)。

    これは JDWP バージョン 1.6 以降。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthread待機しようとしているスレッド
    tagged-objectIDobjectモニターオブジェクト参照 
    locationlocation待機が発生する位置
    longtimeoutスレッド待機時間 (単位はミリ秒)
    Case MonitorWaited - eventKind が JDWP.EventKind.MONITOR_WAITED の場合: ターゲット VM 内のスレッドがモニターオブジェクト上での待機を終了するときに送信される通知。canRequestMonitorEvents 権限が必要 (CapabilitiesNew を参照)。

    これは JDWP バージョン 1.6 以降。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthread待機したスレッド
    tagged-objectIDobjectモニターオブジェクト参照 
    locationlocation待機が発生した位置
    booleantimed_outタイムアウトした場合 true
    Case Exception - eventKind が JDWP.EventKind.EXCEPTION の場合: ターゲット VM の例外通知。例外が非ネイティブメソッドからスローされた場合、例外イベントは例外がスローされた位置で生成される。例外がネイティブメソッドからスローされた場合、例外がスローされたあとの最初の非ネイティブ位置で例外イベントが生成される。  
    intrequestIDイベントを生成させたリクエスト 
    threadIDthread例外付きのスレッド
    locationlocation例外がスローされた位置 (または、ネイティブメソッドからスローされた場合は、スローされたあとの最初の非ネイティブの位置)
    tagged-objectIDexceptionスローされた例外
    locationcatchLocationキャッチされた位置、または 0 (キャッチされなかった場合)。例外がキャッチされたと見なされるのは、スローの時点で、その例外を処理する try 文で現在の位置が動的に囲まれている場合。詳細は、JVM 仕様を参照。そのような try 文が存在する場合、キャッチの位置は、該当する catch 節内の最初の位置になる。

    例外の発生時に呼び出しスタック内にネイティブメソッドが存在する場合は、返されるキャッチ位置について重要な制約があるので要注意。そのような場合、呼び出しスタック上の何らかのネイティブメソッドにより例外が処理されるかどうかは予測できない。そのため、ここでキャッチされなかったと見なされた例外が、実はネイティブメソッドによって処理されていて、ターゲット VM を終了させないという状況が起こり得る。さらに、ここで返されるキャッチ位置に、例外をスローしたスレッドが必ず到達すると見なすこともできない。現在位置とキャッチ位置との間にネイティブフレームが存在する場合には、例外がネイティブメソッド内で処理され、クリアーされる可能性がある。

    ソースコード内に try-catch ブロックが明示的に記述されていない場合、コンパイラが try-catch ブロックを生成できることに注意。たとえば、synchronized および finally ブロックについて生成されるコードには、暗黙の try-catch ブロックが含まれることがある。例外のスロー時にその種の暗黙的に生成された try-catch ブロックが呼び出しスタック上に存在する場合は、ソースコード上では例外がキャッチされないように見えるとしても、例外はキャッチされたと見なされる。  

    Case ThreadStart - eventKind が JDWP.EventKind.THREAD_START の場合: ターゲット VM の新しい実行中スレッドの通知。新規スレッドは、java.lang.Thread.start を呼び出した結果として、または JNI を介して VM に新規スレッドを接続した結果として実行されるようになる。この通知は、新規スレッドにより、その実行が開始される少し前に生成される。このタイミングの影響で、このイベントが受信される前に、そのスレッドについてほかのイベントが受信される可能性がある。特に、メソッドエントリイベントおよびメソッド終了イベントは、スレッドの初期化中に発生することがある。また、VirtualMachine AllThreads コマンドが、あるスレッドを、そのスレッドのスレッド開始イベントが受信される前に返す可能性もある。

    このイベントは、スレッドオブジェクトの作成については何の情報も提供しておらず、デバッグ対象の VM によっては、ずっと以前に作成されたスレッドである可能性もあるので、注意を要する。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthread開始したスレッド
    Case ThreadDeath - eventKind が JDWP.EventKind.THREAD_DEATH の場合: ターゲット VM の完了済みスレッドの通知。この通知は、終了しようとしているスレッドにより終了前に生成される。このタイミングのため、{@link VirtualMachine#allThreads} は、このイベントの受信後に、このスレッドを返すことができる。

    このイベントは、スレッドオブジェクトの寿命については何の情報も提供しない。ターゲット VM にどんな参照が存在するかに応じて、すぐにガベージコレクトされることも、されないこともある。  

    intrequestIDイベントを生成させたリクエスト 
    threadIDthread終了するスレッド
    Case ClassPrepare - eventKind が JDWP.EventKind.CLASS_PREPARE の場合: ターゲット VM のクラス準備の通知。クラス準備の定義については、JVM 仕様を参照。プリミティブクラス (たとえば、java.lang.Integer.TYPE) の場合、クラス準備イベントは生成されない。  
    intrequestIDイベントを生成させたリクエスト 
    threadIDthread準備が行われているスレッド。まれに、ターゲット VM 内のデバッガシステムスレッドでこのイベントが発生することがある。デバッガスレッドはこれらのイベントの発生を防ぐための予防措置を講じるが、ある状況下、特に java.lang.Error のいくつかのサブクラスでは回避できない。このイベントがデバッガシステムスレッドにより生成された場合、このメソッドが返す値は null になる。また、このイベントについて要求された中断ポリシーが EVENT_THREAD である場合は、そのポリシーに反してすべてのスレッドが中断させられ、複合イベントの中断ポリシーもその変更をリフレクトする。

    前述の説明は、通常の (デバッグ以外の) 操作中にターゲット VM により作成されたシステムスレッドには当てはまらない。  

    byterefTypeTag参照型の種類。JDWP.TypeTag を参照
    referenceTypeIDtypeID準備中の型
    stringsignature型シグニチャー 
    intstatus型のステータス。JDWP.ClassStatus を参照
    Case ClassUnload - eventKind が JDWP.EventKind.CLASS_UNLOAD の場合: ターゲット VM のクラスアンロードの通知。

    ガベージコレクションの実行中にはデバッガのバックエンドに厳しい制約があるため、アンロード情報は大幅に制限されている。  

    intrequestIDイベントを生成させたリクエスト 
    stringsignature型シグニチャー 
    Case FieldAccess - eventKind が JDWP.EventKind.FIELD_ACCESS の場合: ターゲット VM のフィールドアクセスの通知。フィールドの変更は、フィールドアクセスとは見なされない。canWatchFieldAccess 権限が必要 (CapabilitiesNew を参照)。
    intrequestIDイベントを生成させたリクエスト 
    threadIDthreadアクセス中のスレッド
    locationlocationアクセスの位置
    byterefTypeTag参照型の種類。JDWP.TypeTag を参照
    referenceTypeIDtypeIDフィールドの型 
    fieldIDfieldIDアクセスされているフィールド
    tagged-objectIDobjectアクセスされているオブジェクト (static の場合は null=0)
    Case FieldModification - eventKind が JDWP.EventKind.FIELD_MODIFICATION の場合: ターゲット VM のフィールド変更の通知。canWatchFieldModification 権限が必要 (CapabilitiesNew を参照)。
    intrequestIDイベントを生成させたリクエスト 
    threadIDthread変更中のスレッド
    locationlocation変更の位置
    byterefTypeTag参照型の種類。JDWP.TypeTag を参照
    referenceTypeIDtypeIDフィールドの型 
    fieldIDfieldID変更されているフィールド
    tagged-objectIDobject変更されているオブジェクト (static の場合は null=0)
    valuevalueToBe割り当てられる値
    Case VMDeath - eventKind が JDWP.EventKind.VM_DEATH の場合:  
    intrequestIDイベントを生成させたリクエスト 

    Error 定数

    NONE0エラーは発生しなかった。  
    INVALID_THREAD10渡されたスレッドが null、無効、またはすでに終了している。  
    INVALID_THREAD_GROUP11スレッドグループが無効。  
    INVALID_PRIORITY12無効な優先順位。  
    THREAD_NOT_SUSPENDED13指定されたスレッドは、イベントによって中断されていない。  
    THREAD_SUSPENDED14スレッドはすでに中断されている。  
    THREAD_NOT_ALIVE15スレッドが開始されていないか、すでに終了している。  
    INVALID_OBJECT20この参照型はすでにアンロードされ、ガベージコレクトされた。  
    INVALID_CLASS21無効なクラス。  
    CLASS_NOT_PREPARED22クラスがロードされているが、まだ準備されていない。  
    INVALID_METHODID23無効なメソッド。  
    INVALID_LOCATION24無効な位置。  
    INVALID_FIELDID25無効なフィールド。  
    INVALID_FRAMEID30無効な jframeID。  
    NO_MORE_FRAMES31呼び出しスタックに Java または JNI フレームがなくなった。  
    OPAQUE_FRAME32フレームに関する情報が入手できない。  
    NOT_CURRENT_FRAME33操作は現在のフレームでしか実行できない。  
    TYPE_MISMATCH34使用した関数と変数の型が合わない。  
    INVALID_SLOT35無効なスロット。  
    DUPLICATE40すでに設定された項目。  
    NOT_FOUND41目的の要素が見つからない。  
    INVALID_MONITOR50無効なモニター。  
    NOT_MONITOR_OWNER51このスレッドはモニターを所有していない。  
    INTERRUPT52呼び出しの完了前に割り込まれた。  
    INVALID_CLASS_FORMAT60仮想マシンがクラスファイルを読み込もうとしたが、ファイルの形式が間違っているか、その他の理由でクラスファイルとして解釈できない。  
    CIRCULAR_CLASS_DEFINITION61クラスの初期化中に、循環定義が検出された。  
    FAILS_VERIFICATION62クラスファイルの形式は正しいが、検証ルーチンは何らかの種類の内部的な不整合かセキュリティー上の問題を検出した。  
    ADD_METHOD_NOT_IMPLEMENTED63追加メソッドが実装されていない。  
    SCHEMA_CHANGE_NOT_IMPLEMENTED64スキーマの変更が実装されていない。  
    INVALID_TYPESTATE65スレッドの状態が変更されたため、不整合が生じている。  
    HIERARCHY_CHANGE_NOT_IMPLEMENTED66新しいクラスのバージョンの直接スーパークラスが異なる、または直接実装されているインタフェースが異なり、canUnrestrictedlyRedefineClasses が false。  
    DELETE_METHOD_NOT_IMPLEMENTED67新しいクラスのバージョンでは、旧クラスのバージョンで宣言したメソッドを宣言せず、また canUnrestrictedlyRedefineClasses が false。  
    UNSUPPORTED_VERSION68クラスファイルのバージョンがこの VM でサポートされていない。  
    NAMES_DONT_MATCH69新しいクラスファイル内で定義されたクラス名が、旧クラスオブジェクト内の名前と異なる。  
    CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED70新しいクラスのバージョンの修飾子が異なり、canUnrestrictedlyRedefineClasses が false。  
    METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED71新しいクラスのバージョンのメソッドの修飾子が旧クラスのバージョンの修飾子と異なり、canUnrestrictedlyRedefineClasses が false。  
    NOT_IMPLEMENTED99この機能はこの仮想マシンに実装されていない。  
    NULL_POINTER100無効なポインタ。  
    ABSENT_INFORMATION101目的の情報を入手できない。  
    INVALID_EVENT_TYPE102指定されたイベントタイプの ID が認識されない。  
    ILLEGAL_ARGUMENT103不正な引数。  
    OUT_OF_MEMORY110関数でメモリーの割り当てが必要になったが、これ以上割り当てられるメモリーがなかった。  
    ACCESS_DENIED111この仮想マシンではデバッグが有効になっていない。JVMTI が使用できない。  
    VM_DEAD112仮想マシンが動作していない。  
    INTERNAL113予期しない内部エラーが発生した。  
    UNATTACHED_THREAD115この関数の呼び出しに使われているスレッドが、仮想マシンに接続されていない。呼び出しは、接続されたスレッドから行う必要がある。  
    INVALID_TAG500オブジェクト型 ID またはクラスタグ。  
    ALREADY_INVOKING502以前の呼び出しが未完了。  
    INVALID_INDEX503インデックスが無効。  
    INVALID_LENGTH504長さが無効。  
    INVALID_STRING506文字列が無効。  
    INVALID_CLASS_LOADER507クラスローダーが無効。  
    INVALID_ARRAY508配列が無効。  
    TRANSPORT_LOAD509トランスポートをロードできない。  
    TRANSPORT_INIT510トランスポートを初期化できない。  
    NATIVE_METHOD511  
    INVALID_COUNT512カウントが無効。  

    EventKind 定数

    SINGLE_STEP1  
    BREAKPOINT2  
    FRAME_POP3  
    EXCEPTION4  
    USER_DEFINED5  
    THREAD_START6  
    THREAD_DEATH7  
    THREAD_END7廃止 - jvmdi で使用されていました  
    CLASS_PREPARE8  
    CLASS_UNLOAD9  
    CLASS_LOAD10  
    FIELD_ACCESS20  
    FIELD_MODIFICATION21  
    EXCEPTION_CATCH30  
    METHOD_ENTRY40  
    METHOD_EXIT41  
    METHOD_EXIT_WITH_RETURN_VALUE42  
    MONITOR_CONTENDED_ENTER43  
    MONITOR_CONTENDED_ENTERED44  
    MONITOR_WAIT45  
    MONITOR_WAITED46  
    VM_START90  
    VM_INIT90廃止 - jvmdi で使用されていました  
    VM_DEATH99  
    VM_DISCONNECTED100JDWP を越えて送信されることはありません

    ThreadStatus 定数

    ZOMBIE0  
    RUNNING1  
    SLEEPING2  
    MONITOR3  
    WAIT4  

    SuspendStatus 定数

    SUSPEND_STATUS_SUSPENDED0x1  

    ClassStatus 定数

    VERIFIED1  
    PREPARED2  
    INITIALIZED4  
    ERROR8  

    TypeTag 定数

    CLASS1参照型はクラス。  
    INTERFACE2参照型はインタフェース。  
    ARRAY3参照型は配列。  

    Tag 定数

    ARRAY91'[' - 配列オブジェクト (objectID サイズ)。  
    BYTE66'B' - バイト値 (1 バイト)。  
    CHAR67'C' - 文字値 (2 バイト)。  
    OBJECT76'L' - オブジェクト (objectID サイズ)。  
    FLOAT70'F' - 浮動小数点値 (4 バイト)。  
    DOUBLE68'D' - 倍精度値 (8 バイト)。  
    INT73'I' - 整数値 (4 バイト)。  
    LONG74'J' - 長整数値 (8 バイト)。  
    SHORT83'S' - 短整数値 (2 バイト)。  
    VOID86'V' - void 値 (バイトなし)。  
    BOOLEAN90'Z' - ブール値 (1 バイト)。  
    STRING115's' - String オブジェクト (objectID サイズ)。  
    THREAD116't' - Thread オブジェクト (objectID サイズ)。  
    THREAD_GROUP103'g' - ThreadGroup オブジェクト (objectID サイズ)。  
    CLASS_LOADER108'l' - ClassLoader オブジェクト (objectID サイズ)。  
    CLASS_OBJECT99'c' - クラスオブジェクト (objectID サイズ)。  

    StepDepth 定数

    INTO0ステップの終了前に、メソッド呼び出しがあれば、その中に入る。  
    OVER1ステップの終了前に、メソッド呼び出しがあれば、そのメソッドをすべて実行する。  
    OUT2現在のメソッドからステップアウトする。  

    StepSize 定数

    MIN0可能な最小の量 (多くの場合、バイトコード命令) だけステップ実行する。  
    LINE1次のソース行までステップ実行する。行番号情報が存在しない場合は、MIN ステップが実行される。  

    SuspendPolicy 定数

    NONE0このイベントの遭遇時にスレッドを中断しない。  
    EVENT_THREAD1このイベントの遭遇時にイベントスレッドを中断する。  
    ALL2このイベントの遭遇時にすべてのスレッドを中断する。  

    InvokeOptions 定数

    呼び出しオプションは、次のビットフラグのうち、0 個以上のビットを組み合わせたもの
    INVOKE_SINGLE_THREADED0x01それ以外の場合、開始したすべてのスレッド。  
    INVOKE_NONVIRTUAL0x02それ以外の場合、通常の仮想呼び出し (インスタンスメソッドのみ)