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がクラスを再定義するときにメソッドを追加できるかどうか
booleancanUnrestrictedlyRedefineClasses通常は制限されている方法でVMがクラスを再定義できるか。
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コマンドを使用して、使用されていないメソッドとともにフレームをポップできます。

canUnrestrictedlyRedefineClasses機能がないかぎり、次の再定義は制限されます。

canRedefineClasses権限が必要です(CapabilitiesNewを参照)。 ターゲットVMには、canRedefineClasses機能の他に、クラスの再定義時にメソッドを追加するための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の場合があります。
CLASS_ATTRIBUTE_CHANGE_NOT_IMPLEMENTED新しいクラスのバージョンのNestHostまたはNestMembersクラス属性が異なるため、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仮想マシンが動作していない。 

AllModulesコマンド(22)
ターゲットVMのすべてのモジュールを返します。

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

出力データ
(なし)
応答データ
intmodules続くモジュールの数。
繰り返しmodules回:
moduleIDmoduleモジュールの1つ。
エラー・データ
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フィールドの値を返します。 各フィールドは、参照型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえば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仮想マシンが動作していない。 

モジュール・コマンド(19)
この参照型が属するモジュールを返します。

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

出力データ
referenceTypeIDrefType参照型。 
応答データ
moduleIDmoduleこの参照型が属するモジュール。
エラー・データ
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
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フィールドの値を設定します。 各フィールドは、クラス型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえば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メソッドを呼び出します。 このメソッドは、クラス型のメンバーまたはスーパークラスのいずれかでなければなりません。 アクセス制御は実行されません。このため、たとえば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は、このクラス型内、またはスーパー・クラス内の1つの静的メソッドの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)

InvokeMethodコマンド(1)
staticメソッドを呼び出します。 メソッドを静的初期化子にすることはできません。 メソッドは、インタフェース型のメンバーである必要があります。

これはJDWPバージョン1.8以降です

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

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

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

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

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

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

出力データ
interfaceIDclazzインタフェース型ID。 
threadIDthread呼出しを行うスレッド。 
methodIDmethodID呼び出すメソッド。 
intarguments 
arguments回の繰り返し:
valuearg引数の値。 
intoptions呼び出しオプション 
応答データ
valuereturnValue戻り値。
tagged-objectIDexceptionスローされた例外。
エラー・データ
INVALID_CLASSclazzがインタフェースのIDではない。 
INVALID_OBJECTclazzが既知のIDではない。 
INVALID_METHODIDmethodIDは、このインタフェース型内の静的メソッドのIDではないか、または静的初期化子のIDです。 
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
VM_DEAD仮想マシンが動作していない。 

Methodコマンド・セット(6)

LineTableコマンド(1)
存在する場合、メソッドの行番号情報を返します。 行テーブルは、ソース行番号を、行の初期コード・インデックスにマッピングします。 行テーブルは、コード・インデックスにより(昇順で)順序付けされます。 RedefineClassesを使って新しいクラス定義がインストールされないかぎり、行番号は定数です。
出力データ
referenceTypeIDrefTypeクラス。 
methodIDmethodIDメソッド。 
応答データ
longstartメソッドについて有効な最小のコード・インデックス。>=0または -1 (メソッドがネイティブの場合)
longendメソッドについて有効な最大のコード・インデックス。>=0または -1 (メソッドがネイティブの場合)
intlinesこのメソッドの行テーブル内のエントリ数。
lines回の繰り返し:
longlineCodeIndex行の初期コード・インデックス、start <= lineCodeIndex < end
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つ以上のインスタンス・フィールドの値を返します。 各フィールドは、オブジェクトの型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を取得できます。
出力データ
objectIDobjectオブジェクトID 
intfields取得する値の数 
fields回の繰り返し:
fieldIDfieldID取得するフィールド。
応答データ
intvalues返される値の数。「fields」(取得する値の数)と常に等しい。 応答では、フィールドの値はコマンド内の対応するfieldIDと同じ順序で順序付けされる。
values回の繰り返し:
valuevalueフィールドの値 
エラー・データ
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_FIELDID無効なフィールド。 
VM_DEAD仮想マシンが動作していない。 
SetValuesコマンド(3)
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)
インスタンス・メソッドを呼び出します。 メソッドは、オブジェクトの型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえば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、またはスーパー・クラス、スーパーインタフェース、もしくは実装されたインタフェースの内の1つの静的メソッドの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)
非同期の例外が発生してスレッドを停止します。
出力データ
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)
スレッド・スタックの一番上のスタック・フレームを「frame」までポップします。 このコマンドを実行するには、スレッドが中断されている必要があります。 一番上のスタック・フレームは破棄され、「frame」の前のスタック・フレームが現在のフレームになります。 オペランド・スタックは回復します。引数が再度追加され、呼出しが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仮想マシンが動作していない。 

ModuleReferenceコマンド・セット(18)

Nameコマンド (1)
このモジュールの名前を返します。

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

出力データ
moduleIDmoduleこのモジュール。
応答データ
stringnameモジュール名。
エラー・データ
INVALID_MODULEモジュールが無効です。
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

ClassLoaderコマンド(2)
このモジュールのクラス・ローダーを返します。

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

出力データ
moduleIDmoduleこのモジュール。
応答データ
classLoaderIDclassLoaderモジュール・クラス・ローダー。
エラー・データ
INVALID_MODULEモジュールが無効です。
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
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無効なslot  
DUPLICATE40すでに設定された項目。 
NOT_FOUND41目的の要素が見つからない。 
INVALID_MODULE42モジュールが無効です。
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の場合があります。
CLASS_ATTRIBUTE_CHANGE_NOT_IMPLEMENTED72新しいクラスのバージョンのNestHostまたはNestMembersクラス属性が異なるため、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それ以外の場合、通常の仮想呼び出し(インスタンス・メソッドのみ)