Java Debug Wire Protocol詳細

機械翻訳について

VirtualMachineコマンド・セット(1)

Versionコマンド(1)

ターゲットのVMにより実装されたJDWPのバージョンを返します。 バージョン文字列の書式は、実装に依存します。
出力データ
(なし)
応答データ
名前 説明
string description VMのバージョンに関するテキスト情報
int jdwpMajor JDWPのメジャー・バージョン番号
int jdwpMinor JDWPのマイナー・バージョン番号
string vmVersion ターゲットVMのJREバージョン(java.versionプロパティの値と同じ)
string vmName ターゲットVM名(java.vm.nameプロパティの値と同じ)
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

ClassesBySignatureコマンド(2)

ターゲットVMによりロードされたクラスのうち、指定されたシグネチャと一致するすべてのクラスの参照型を返します。 複数のクラス・ローダーが同じ名前のクラスをロードしている場合は、複数の参照型が返されます。 検索は、ロードされたクラスのみに限定されます。指定されたシグネチャを持つクラスのロードは行われません。
出力データ
名前 説明
string signature 検索するクラスのJNIシグニチャ(たとえば、"Ljava/lang/String;")。 
応答データ
名前 説明
int classes あとに続く参照型の数。 
classes回の繰り返し:
byte
refTypeTag あとに続く参照型の種類。 
referenceTypeID
typeID 対応するロードされた参照型
int
status 現在のクラスのステータス。   
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

AllClassesコマンド(3)

ターゲットVMによって現在ロードされているクラスすべての参照型を返します。
出力データ
(なし)
応答データ
名前 説明
int classes あとに続く参照型の数。 
classes回の繰り返し:
byte
refTypeTag あとに続く参照型の種類。 
referenceTypeID
typeID ロードされた参照型 
string
signature ロードされた参照型のJNIシグニチャ
int
status 現在のクラスのステータス。   
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

AllThreadsコマンド(4)

ターゲットVMで実行中のすべてのスレッドを返します。 返されるリストには、java.lang.Threadで作成されたスレッド、JNIを介してターゲットVMに接続されたすべてのネイティブ・スレッド、およびターゲットVMにより作成されたシステム・スレッドが含まれます。 開始されていないスレッド、および実行の完了したスレッドは、リストに含まれません。
出力データ
(なし)
応答データ
名前 説明
int threads あとに続くスレッドの数
threads回の繰り返し:
threadID
thread 実行中のスレッド
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

TopLevelThreadGroupsコマンド(5)

親を持たないスレッド・グループをすべて返します。 このコマンドは、既存のスレッド・グループの(1つまたは複数の)ツリーを構築する最初のステップとして使用できます。
出力データ
(なし)
応答データ
名前 説明
int groups あとに続くスレッド・グループの数
groups回の繰り返し:
threadGroupID
group トップ・レベルのスレッド・グループ
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

Disposeコマンド (6)

この仮想マシンのミラーを無効にします。 ターゲットVMへの通信チャネルが閉じられ、ターゲットVMは、このデバッガまたは別のデバッガからの次の接続を受け付ける準備をします。これには、次のような作業が含まれます。 ターゲットVMで実行中のすべてのメソッド呼出しは、切断後も継続されます。 そのようなメソッド呼出しが完了すると、呼出し元のスレッドは、もともと停止した場所から実行を継続します。

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

出力データ
(なし)
応答データ
(なし)
エラー・データ
(なし)

IDSizesコマンド(7)

ターゲットVM内に存在する可変サイズのデータ型のサイズを返します。戻り値は、コマンド・パケットおよび応答パケット内でその識別子が使用しているバイト数を示します。
出力データ
(なし)
応答データ
名前 説明
int fieldIDSize fieldIDのサイズ(バイト単位)
int methodIDSize methodIDのサイズ(バイト単位)
int objectIDSize objectIDのサイズ(バイト単位)
int referenceTypeIDSize referenceTypeIDのサイズ(バイト単位)
int frameIDSize frameIDのサイズ(バイト単位)
エラー・データ
説明
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ブロックは実行されません。
出力データ
名前 説明
int exitCode 終了コード
応答データ
(なし)
エラー・データ
(なし)

CreateStringコマンド(11)

ターゲットVM内に文字列オブジェクトを新規作成し、そのIDを返します。
出力データ
名前 説明
string utf 作成された文字列内で使用するUTF-8形式の文字。 
応答データ
名前 説明
stringID stringObject 作成された文字列(java.lang.Stringのインスタンス)
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

Capabilitiesコマンド (12)

このVMの権限を取得します。 各権限はboolean値として返され、その権限が存在するかどうかを示します。 各権限に関連するコマンドは、その権限が利用できない場合、NOT_IMPLEMENTEDエラーを返します。
出力データ
(なし)
応答データ
名前 説明
boolean canWatchFieldModification VMがフィールドの変更を監視して、変更ウォッチポイント・イベントを送信可能かどうか 
boolean canWatchFieldAccess VMがフィールドへのアクセスを監視して、アクセス・ウォッチポイント・イベントを送信可能かどうか 
boolean canGetBytecodes VMが、指定されたメソッドのバイト・コードを取得できるかどうか 
boolean canGetSyntheticAttribute フィールドまたはメソッドが合成である場合、VMがそれを判別できるかどうか(つまり、メソッドまたはフィールドがコンパイラにより生成されたものである場合、VMがそれを判別できるかどうか) 
boolean canGetOwnedMonitorInfo 所有されたスレッドのモニター情報を、VMが取得可能かどうか 
boolean canGetCurrentContendedMonitor 現在競合しているスレッドのモニターを、VMが取得可能かどうか 
boolean canGetMonitorInfo 指定されたオブジェクトのモニター情報を、VMが取得できるかどうか 
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

ClassPathsコマンド(13)

ターゲットVMのclasspathおよびbootclasspathを取得します。 classpathが定義されていない場合は、空のリストを返します。 bootclasspathが定義されていない場合は、空のリストを返します。
出力データ
(なし)
応答データ
名前 説明
string baseDir 次のリスト内のいずれかの相対パス解決で使用されるベース・ディレクトリ。
int classpaths classpath内のパスの数
classpaths回の繰り返し:
string
path classpathの1コンポーネント
int bootclasspaths bootclasspath内のパスの数。
bootclasspaths回の繰り返し:
string
path bootclasspathの1コンポーネント
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

DisposeObjectsコマンド(14)

オブジェクトIDのリストを解放します。 リスト内の各オブジェクトに対して、以下の処理が適用されます。 バックエンドによって保持されている参照の回数(参照カウント)が、refCntによって減らされます。 その後、参照カウントが0以下であれば、そのIDは解放されます。 解放されたIDに関連付けられているバックエンド・リソースがあれば、そのリソースも解放され、オブジェクトのガベージ・コレクションが無効にされていれば、再度有効にされます。 このコマンドを送った側は、解放されたIDを参照するコマンドをそれ以降は送らないようにしなければなりません。

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

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

出力データ
名前 説明
int requests あとに続くオブジェクト破棄要求の数
requests回の繰り返し:
objectID
object オブジェクトID 
int
refCnt このオブジェクトIDがバックエンドから受け取ったパケットに含まれていた回数。 ここに正確なカウントを指定することにより、オブジェクトIDが着信パケットの一部であり、まだフロント・エンドにより処理されていない場合に、オブジェクトIDがバックエンドで解放されることを回避できる。
応答データ
(なし)
エラー・データ
(なし)

HoldEventsコマンド(15)

ターゲットVMに対し、イベントの送信を停止するように伝えます。 イベントは破棄されるのではなく、次にReleaseEventsコマンドが送信されるまで保持されます。 大量のイベントが生成される状況で、デバッガVMに送信されるイベントの数を制御する場合に、このコマンドは有用です。 イベントはデバッガ・バック・エンドにより保持されます。アプリケーションの実行は、バッファがデバッガ・バック・エンドでオーバーフローしないように、バック・エンドによって凍結されます。コマンドへの応答は保持されないため、このコマンドによる影響はありません。 イベントがすでに保持されている場合、このコマンドは無視されます。
出力データ
(なし)
応答データ
(なし)
エラー・データ
(なし)

ReleaseEventsコマンド(16)

ターゲットVMに対し、イベントの送信を継続するよう伝えます。 このコマンドは、HoldEventsコマンドの実行後に通常のアクティビティを復元する際に使用されます。 現在有効なHoldEventsコマンドが存在しない場合、このコマンドは無視されます。
出力データ
(なし)
応答データ
(なし)
エラー・データ
(なし)

CapabilitiesNewコマンド(17)

このVMのすべての権限を取得します。 各権限はboolean値として返され、その権限が存在するかどうかを示します。 各権限に関連するコマンドは、JDWP 1バージョン1.4以降でその権限が利用できない場合、NOT_IMPLEMENTEDエラーを返します。
出力データ
(なし)
応答データ
名前 説明
boolean canWatchFieldModification VMがフィールドの変更を監視して、変更ウォッチポイント・イベントを送信可能かどうか 
boolean canWatchFieldAccess VMがフィールドへのアクセスを監視して、アクセス・ウォッチポイント・イベントを送信可能かどうか 
boolean canGetBytecodes VMが、指定されたメソッドのバイト・コードを取得できるかどうか 
boolean canGetSyntheticAttribute フィールドまたはメソッドが合成である場合、VMがそれを判別できるかどうか(つまり、メソッドまたはフィールドがコンパイラにより生成されたものである場合、VMがそれを判別できるかどうか) 
boolean canGetOwnedMonitorInfo 所有されたスレッドのモニター情報を、VMが取得可能かどうか 
boolean canGetCurrentContendedMonitor 現在競合しているスレッドのモニターを、VMが取得可能かどうか 
boolean canGetMonitorInfo 指定されたオブジェクトのモニター情報を、VMが取得できるかどうか 
boolean canRedefineClasses VMがクラスを再定義できるかどうか
boolean canAddMethod VMがクラスを再定義するときにメソッドを追加できるかどうか
boolean canUnrestrictedlyRedefineClasses 通常は制限されている方法でVMがクラスを再定義できるか。
boolean canPopFrames VMがスタック・フレームをポップできるかどうか
boolean canUseInstanceFilters VMが特定のオブジェクトでイベントをフィルタできるかどうか
boolean canGetSourceDebugExtension VMがソース・デバッグ拡張機能を取得できるかどうか
boolean canRequestVMDeathEvent VMがVM終了イベントを要求できるかどうか
boolean canSetDefaultStratum VMがデフォルトの層を設定できるかどうか
boolean canGetInstanceInfo VMがインスタンス、クラスのインスタンス数、参照するオブジェクトを返せるかどうか
boolean canRequestMonitorEvents VMが監視イベントを要求できるかどうか
boolean canGetMonitorFrameInfo VMがフレームの深さに関する情報を含む監視を取得できるかどうか
boolean canUseSourceNameFilters VMがソース名に基づいてクラス準備イベントをフィルタ処理できるかどうか
boolean canGetConstantPool VMが定数プール情報を返せるかどうか
boolean canForceEarlyReturn VMがメソッドからの戻り値を早期に返させることができるかどうか
boolean reserved22 将来の権限のために予約済み 
boolean reserved23 将来の権限のために予約済み 
boolean reserved24 将来の権限のために予約済み 
boolean reserved25 将来の権限のために予約済み 
boolean reserved26 将来の権限のために予約済み 
boolean reserved27 将来の権限のために予約済み 
boolean reserved28 将来の権限のために予約済み 
boolean reserved29 将来の権限のために予約済み 
boolean reserved30 将来の権限のために予約済み 
boolean reserved31 将来の権限のために予約済み 
boolean reserved32 将来の権限のために予約済み 
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

RedefineClassesコマンド(18)

新しいクラス定義をインストールします。 ターゲットVMで再定義されたクラスのメソッドにアクティブなスタック・フレームがあると、そのアクティブ・フレームは元のメソッドのバイト・コードの実行を続行します。 これらのメソッドは、使用されていないものと見なされます(IsObsoleteを参照)。 再定義されたクラスのメソッドは、ターゲットVMの新しい呼出しに使用されます。 元のメソッドIDは再定義されたメソッドを参照します。 再定義されたクラスのすべてのブレークポイントが解除されます。スタック・フレームをリセットする場合は、PopFramesコマンドを使用して、使用されていないメソッドとともにフレームをポップできます。

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

canRedefineClasses権限が必要です(CapabilitiesNewを参照)。 ターゲットVMには、canRedefineClasses機能の他に、クラスの再定義時にメソッドを追加するためのcanAddMethod機能や、通常は制限されている方法でクラスを再定義するためのcanUnrestrictedlyRedefineClasses機能が必要です。

出力データ
名前 説明
int classes あとに続く参照型の数。 
classes回の繰り返し:
referenceTypeID
refType 参照型。 
int
classfile 定義するクラスのバイト数(下)
classfile回の繰り返し:
byte
classbyte JVMクラス・ファイル形式のバイト。
応答データ
(なし)
エラー・データ
説明
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、またはRecordクラス属性が異なり、canUnrestrictedlyRedefineClassesがfalseです。
VM_DEAD仮想マシンが動作していない。 

SetDefaultStratumコマンド(19)

デフォルトの層を設定します。 canSetDefaultStratum権限が必要です(CapabilitiesNewを参照)。
出力データ
名前 説明
string stratumID デフォルト層、または参照型デフォルトを使用するための空の文字列。
応答データ
(なし)
エラー・データ
説明
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

AllClassesWithGenericコマンド(20)

ターゲットVMによって現在ロードされているクラスすべての参照型を返します。 各クラスに対してJNIシグニチャとジェネリック・シグニチャの両方が返されます。 ジェネリックス・シグニチャについては、Java™仮想マシン仕様のシグニチャ属性のセクションを参照してください。 これはJDWPバージョン1.5以降です。
出力データ
(なし)
応答データ
名前 説明
int classes あとに続く参照型の数。 
classes回の繰り返し:
byte
refTypeTag あとに続く参照型の種類。 
referenceTypeID
typeID ロードされた参照型 
string
signature ロードされた参照型のJNIシグニチャ。
string
genericSignature ロードされた参照型のジェネリック・シグニチャ、ない場合は空の文字列。
int
status 現在のクラスのステータス。   
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

InstanceCountsコマンド(21)

入力リスト内の各参照型のインスタンス数を返します。 ガベージ・コレクト目的で到達可能なインスタンスだけがカウントされます。 アンロード済みなどの理由で参照型が無効な場合、インスタンス・カウントとしてゼロが返されます。

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

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

AllModulesコマンド(22)

ターゲットVMのすべてのモジュールを返します。

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

出力データ
(なし)
応答データ
名前 説明
int modules 続くモジュールの数。
繰り返しmodules回:
moduleID
module モジュールの1つ。
エラー・データ
説明
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

ReferenceTypeコマンド・セット(2)

Signatureコマンド (1)

参照型のJNIシグニチャを返します。 JNIシグネチャ形式の説明は、「Java Native Interface仕様」にあります。

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

出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
string signature 参照型のJNIシグニチャ。 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

ClassLoaderコマンド(2)

指定された参照型をロードしたjava.lang.ClassLoaderのインスタンスを返します。 その参照型がシステム・クラス・ローダーによりロードされた場合、返されるオブジェクトIDはnullになります。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
classLoaderID classLoader 参照型のクラス・ローダー。 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Modifiersコマンド (3)

参照型の修飾子(アクセス・フラグともいう)を返します。 返されるビット・マスクには、参照型の宣言に関する情報が含まれます。 参照型が配列またはプリミティブ・クラス(たとえば、java.lang.Integer.TYPE)である場合、返されるビット・マスクの値は定義されません。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int modBits Java™仮想マシン仕様の第4章で定義されている修飾子ビット 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Fieldsコマンド (4)

参照型の各フィールドに関する情報を返します。 継承したフィールドは含まれません。 フィールド・リストには、コンパイラにより作成されたすべての合成フィールドが含まれます。 フィールドは、クラス・ファイル内に出現する順序で返されます。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int declared 宣言されているフィールドの数。 
declared回の繰り返し:
fieldID
fieldID フィールドID。 
string
name フィールドの名前。
string
signature フィールドのJNIシグニチャ。
int
modBits フィールド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、Java™仮想マシン仕様の第4章に定義されている。 また、合成属性の権限を利用可能な場合には、0xf0000000ビットは、そのフィールドが合成であることを示す。 
エラー・データ
説明
CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Methodsコマンド (5)

参照型の各メソッドに関する情報を返します。 継承されたメソッドは、含まれません。 メソッドのリストには、コンストラクタ(名前「<init>」で識別される)、存在する場合には初期化メソッド(名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。 メソッドは、クラス・ファイル内に出現する順序で返されます。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int declared 宣言されているメソッドの数。 
declared回の繰り返し:
methodID
methodID メソッドID。 
string
name メソッドの名前。
string
signature メソッドのJNIシグニチャ。
int
modBits メソッド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、Java™仮想マシン仕様の第4章に定義されている。 また、合成属性の権限を利用可能な場合には、0xf0000000ビットは、そのメソッドが合成であることを示す。 
エラー・データ
説明
CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

GetValuesコマンド(6)

参照型の1つ以上のstaticフィールドの値を返します。 各フィールドは、参照型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を取得できます。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
int fields 取得する値の数 
fields回の繰り返し:
fieldID
fieldID 取得するフィールド
応答データ
名前 説明
int values 返される値の数。fieldsの取得する値の数と常に等しい。
values回の繰り返し:
value
value フィールドの値 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
INVALID_FIELDID無効なフィールド。 
VM_DEAD仮想マシンが動作していない。 

SourceFileコマンド(7)

参照型が宣言されたソース・ファイルの名前を返します。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
string sourceFile ソース・ファイルの名前。 ファイルのパス情報は含まれない
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
ABSENT_INFORMATIONソース・ファイルの属性が存在しない。
VM_DEAD仮想マシンが動作していない。 

NestedTypesコマンド(8)

この型のすぐ内側にネストしたクラスとインタフェースを返します。これらの型のさらに内側にネストしたタイプは含まれません。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int classes ネストされたクラスとインタフェースの数
classes回の繰り返し:
byte
refTypeTag あとに続く参照型の種類。 
referenceTypeID
typeID ネストされたクラスまたはインタフェースのID。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Statusコマンド (9)

参照型の現在のステータスを返します。 Java™仮想マシン仕様のセクション2.1.6で説明されているように、ステータスは参照型の初期化の程度を示します。 クラスがリンクしている場合は、返されるステータス・ビットのPREPAREDおよびVERIFIEDビットが設定されます。 クラスが初期化されている場合は、返されるステータス・ビットのINITIALIZEDビットが設定されます。 初期化中にエラーが発生した場合は、返されるステータス・ビットのERRORビットが設定されます。 返されるステータス・ビットは、配列型およびプリミティブ・クラス(java.lang.Integer.TYPEなど)の場合は未定義です。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int status ステータス・ビット。JDWP.ClassStatusを参照 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Interfacesコマンド (10)

このクラスによる実装が宣言されたインタフェースを返します。 間接的に実装された(実装済みのインタフェースから継承した、またはスーパー・クラスが実装した)インタフェースは含まれません。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int interfaces 実装したインタフェースの数
interfaces回の繰り返し:
interfaceID
interfaceType 実装されたインタフェース。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

ClassObjectコマンド(11)

この型に対応するクラス・オブジェクトを返します。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
classObjectID classObject クラス・オブジェクト。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

SourceDebugExtensionコマンド(12)

SourceDebugExtension属性の値を返します。 これはJDWPバージョン1.4以降です。 canGetSourceDebugExtension権限が必要です(CapabilitiesNewを参照)。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
string extension 拡張属性
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
ABSENT_INFORMATION拡張属性が指定されていない。
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

SignatureWithGenericコマンド(13)

参照型のJNIシグネチャを返します。存在する場合はジェネリック・シグネチャも一緒に返します。 ジェネリックス・シグニチャについては、Java™仮想マシン仕様のシグニチャ属性のセクションを参照してください。 これはJDWPバージョン1.5以降です。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
string signature 参照型のJNIシグニチャ。 
string genericSignature 参照型のジェネリック・シグニチャ、ない場合は空の文字列。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

FieldsWithGenericコマンド(14)

参照型の各フィールドに関する情報(存在する場合はジェネリック・シグニチャを含む)を返します。 継承したフィールドは含まれません。 フィールド・リストには、コンパイラにより作成されたすべての合成フィールドが含まれます。 フィールドは、クラス・ファイル内に出現する順序で返されます。 ジェネリックス・シグニチャについては、Java™仮想マシン仕様のシグニチャ属性のセクションを参照してください。 これはJDWPバージョン1.5以降です。
出力データ
名前 説明
referenceTypeID refType 参照型ID。 
応答データ
名前 説明
int declared 宣言されているフィールドの数。 
declared回の繰り返し:
fieldID
fieldID フィールドID。 
string
name フィールドの名前。
string
signature フィールドのJNIシグニチャ。
string
genericSignature フィールドのジェネリック・シグニチャ、ない場合は空の文字列。
int
modBits フィールド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、Java™仮想マシン仕様の第4章に定義されている。 また、合成属性の権限を利用可能な場合には、0xf0000000ビットは、そのフィールドが合成であることを示す。 
エラー・データ
説明
CLASS_NOT_PREPAREDクラスがロードされているが、まだ準備されていない。 
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

MethodsWithGenericコマンド(15)

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

Instancesコマンド (16)

この参照型のインスタンスを返します。 ガベージ・コレクト目的で到達可能なインスタンスだけが返されます。

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

出力データ
名前 説明
referenceTypeID refType 参照型ID。 
int maxInstances 返されるインスタンスの最大数。 負でない数値。 ゼロの場合、すべてのインスタンスが返される。
応答データ
名前 説明
int instances あとに続くインスタンスの数。
instances回の繰り返し:
tagged-objectID
instance この参照型のインスタンス。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
ILLEGAL_ARGUMENTmaxInstancesがゼロより小さい。
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

ClassFileVersionコマンド(17)

Java仮想マシン仕様のクラス・ファイル形式で定義されているクラス・ファイルのメジャー・バージョン番号とマイナー・バージョン番号を返します。

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

出力データ
名前 説明
referenceTypeID refType クラス。 
応答データ
名前 説明
int majorVersion メジャー・バージョン番号
int minorVersion マイナー・バージョン番号
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
ABSENT_INFORMATIONプリミティブ型および配列型のクラス・ファイル・バージョン情報が存在しない。
VM_DEAD仮想マシンが動作していない。 

ConstantPoolコマンド(18)

Java™仮想マシン仕様のクラス・ファイル形式の説明に記載されているconstant_pool項目の形式で、定数プールのrawバイト数を返します。

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

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

モジュール・コマンド(19)

この参照型が属するモジュールを返します。

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

出力データ
名前 説明
referenceTypeID refType 参照型。 
応答データ
名前 説明
moduleID module この参照型が属するモジュール。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

ClassTypeコマンド・セット(3)

Superclassコマンド (1)

クラスの直属のスーパー・クラスを返します。
出力データ
名前 説明
classID clazz クラス型ID。 
応答データ
名前 説明
classID superclass スーパー・クラス(java.lang.ObjectのクラスIDが指定されている場合は、null)。
エラー・データ
説明
INVALID_CLASSclazzがクラスのIDではない。 
INVALID_OBJECTclazzが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

SetValuesコマンド(2)

1つ以上のstaticフィールドの値を設定します。 各フィールドは、クラス型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を設定できます。 最後のフィールドを設定することはできません。プリミティブ値の場合、値の型とフィールドの型は正確に一致している必要があります。 オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。
出力データ
名前 説明
classID clazz クラス型ID。 
int values 設定するフィールドの数。 
values回の繰り返し:
fieldID
fieldID 設定するフィールド。 
untagged-value
value フィールドに入力する値。 
応答データ
(なし)
エラー・データ
説明
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コマンドによる)、メソッド呼出しは続行されます。

出力データ
名前 説明
classID clazz クラス型ID。 
threadID thread 呼出しを行うスレッド。 
methodID methodID 呼び出すメソッド。 
int arguments  
arguments回の繰り返し:
value
arg 引数の値。 
int options 呼び出しオプション 
応答データ
名前 説明
value returnValue 戻り値。
tagged-objectID exception スローされた例外。
エラー・データ
説明
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コマンドによる)、メソッド呼出しは続行されます。

出力データ
名前 説明
classID clazz クラス型ID。 
threadID thread コンストラクタを呼び出すスレッド。
methodID methodID 呼出し先のコンストラクタ。
int arguments  
arguments回の繰り返し:
value
arg 引数の値。 
int options コンストラクタ呼出しのオプション 
応答データ
名前 説明
tagged-objectID newObject 新規に作成されたオブジェクト、またはコンストラクタが例外をスローする場合はnull。
tagged-objectID exception スローされた例外(存在する場合)、または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)

この型の配列オブジェクトを、指定された長さで新規作成します。
出力データ
名前 説明
arrayTypeID arrType 新規インスタンスの配列型。
int length 配列の長さ。 
応答データ
名前 説明
tagged-objectID newArray 新規作成された配列オブジェクト。 
エラー・データ
説明
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コマンドによる)、メソッド呼出しは続行されます。

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

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

LineTableコマンド(1)

存在する場合、メソッドの行番号情報を返します。 行テーブルは、ソース行番号を、行の初期コード・インデックスにマッピングします。 行テーブルは、コード・インデックスにより(昇順で)順序付けされます。 RedefineClassesを使って新しいクラス定義がインストールされないかぎり、行番号は定数です。
出力データ
名前 説明
referenceTypeID refType クラス。 
methodID methodID メソッド。 
応答データ
名前 説明
long start メソッドについて有効な最小のコード・インデックス。>=0または -1 (メソッドがネイティブの場合)
long end メソッドについて有効な最大のコード・インデックス。>=0または -1 (メソッドがネイティブの場合)
int lines このメソッドの行テーブル内のエントリ数。
lines回の繰り返し:
long
lineCodeIndex 行の初期コード・インデックス、start <= lineCodeIndex < end
int
lineNumber 行番号。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
INVALID_METHODIDmethodIDがメソッドのIDではない。 
VM_DEAD仮想マシンが動作していない。 

VariableTableコマンド(2)

メソッドの変数情報を返します。 変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。 インスタンス・メソッドの場合、「this」参照がテーブルに含まれます。 また、合成変数が存在する場合もあります。
出力データ
名前 説明
referenceTypeID refType クラス。 
methodID methodID メソッド。 
応答データ
名前 説明
int argCnt 引数で使用されるフレーム内のワード数。 8バイトの引数は2ワードを使用し、その他の引数は1ワードを使用する。 
int slots 変数の数。 
slots回の繰り返し:
long
codeIndex 変数が可視状態にある最初のコード・インデックス(符号なし)。 lengthと一緒に使う。 この変数は、現在のcodeIndex <= 現在のフレーム・コード・インデックス<codeIndex + length  
string
name 変数の名前。 
string
signature 変数型のJNIシグニチャ。 
int
length codeIndexと一緒に使う符号なしの値。 この変数は、現在のcodeIndex <= 現在のフレーム・コード・インデックス<code index + length  
int
slot フレーム内の局所変数のインデックス 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
INVALID_METHODIDmethodIDがメソッドのIDではない。 
ABSENT_INFORMATIONメソッドの変数情報がない。 
VM_DEAD仮想マシンが動作していない。 

Bytecodesコマンド (3)

メソッドのバイト・コード(Java™仮想マシン仕様で定義されている)を取得します。 canGetBytecodes権限が必要です(CapabilitiesNewを参照)。
出力データ
名前 説明
referenceTypeID refType クラス。 
methodID methodID メソッド。 
応答データ
名前 説明
int bytes  
bytes回の繰り返し:
byte
bytecode Javaバイト・コード。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
INVALID_METHODIDmethodIDがメソッドのIDではない。 
NOT_IMPLEMENTEDターゲット仮想マシンがバイト・コードの取得をサポートしていない。
VM_DEAD仮想マシンが動作していない。 

IsObsoleteコマンド(4)

メソッドがもう使用されていないものかどうかを判別します。 RedefineClassesコマンドを使用してメソッドが同等ではないメソッドで置き換えられている場合、メソッドは使用されていません。 双方のメソッドのバイト・コードが同じ場合(定数プールのインデックスを除く)、参照定数が等しい場合は、元のメソッドと再定義したメソッドが同等と見なされます。
出力データ
名前 説明
referenceTypeID refType クラス。 
methodID methodID メソッド。 
応答データ
名前 説明
boolean isObsolete RedefineClassesコマンドによって、このメソッドが同等でないメソッドで置き換えられている場合はtrue。
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
INVALID_METHODIDmethodIDがメソッドのIDではない。 
NOT_IMPLEMENTEDターゲット仮想マシンがこのクエリーをサポートしていない。
VM_DEAD仮想マシンが動作していない。 

VariableTableWithGenericコマンド(5)

変数のジェネリック・シグニチャを含むメソッドの変数情報を返します。 変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。 インスタンス・メソッドの場合、「this」参照がテーブルに含まれます。 また、合成変数が存在する場合もあります。 ジェネリックス・シグニチャについては、Java™仮想マシン仕様のシグニチャ属性のセクションを参照してください。 これはJDWPバージョン1.5以降です。
出力データ
名前 説明
referenceTypeID refType クラス。 
methodID methodID メソッド。 
応答データ
名前 説明
int argCnt 引数で使用されるフレーム内のワード数。 8バイトの引数は2ワードを使用し、その他の引数は1ワードを使用する。 
int slots 変数の数。 
slots回の繰り返し:
long
codeIndex 変数が可視状態にある最初のコード・インデックス(符号なし)。 lengthと一緒に使う。 この変数は、現在のcodeIndex <= 現在のフレーム・コード・インデックス<codeIndex + length  
string
name 変数の名前。 
string
signature 変数型のJNIシグニチャ。 
string
genericSignature 変数型のジェネリック・シグニチャ、ない場合は空の文字列。
int
length codeIndexと一緒に使う符号なしの値。 この変数は、現在のcodeIndex <= 現在のフレーム・コード・インデックス<code index + length  
int
slot フレーム内の局所変数のインデックス 
エラー・データ
説明
INVALID_CLASSrefTypeが参照型のIDではない。 
INVALID_OBJECTrefTypeが既知のIDではない。 
INVALID_METHODIDmethodIDがメソッドのIDではない。 
ABSENT_INFORMATIONメソッドの変数情報がない。 
VM_DEAD仮想マシンが動作していない。 

Fieldコマンド・セット(8)

ObjectReferenceコマンド・セット(9)

ReferenceTypeコマンド(1)

オブジェクトの実行時の型を返します。 実行時の型は、クラスまたは配列です。
出力データ
名前 説明
objectID object オブジェクトID 
応答データ
名前 説明
byte refTypeTag あとに続く参照型の種類。 
referenceTypeID typeID 実行時の参照型。
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
VM_DEAD仮想マシンが動作していない。 

GetValuesコマンド(2)

1つ以上のインスタンス・フィールドの値を返します。 各フィールドは、オブジェクトの型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を取得できます。
出力データ
名前 説明
objectID object オブジェクトID 
int fields 取得する値の数 
fields回の繰り返し:
fieldID
fieldID 取得するフィールド。
応答データ
名前 説明
int values 返される値の数。「fields」(取得する値の数)と常に等しい。 応答では、フィールドの値はコマンド内の対応するfieldIDと同じ順序で順序付けされる。
values回の繰り返し:
value
value フィールドの値 
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_FIELDID無効なフィールド。 
VM_DEAD仮想マシンが動作していない。 

SetValuesコマンド(3)

1つ以上のインスタンス・フィールドの値を設定します。 各フィールドは、オブジェクトの型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を設定できます。 プリミティブ値の場合は、値の型とフィールドの型が正確に一致している必要があります。 オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。
出力データ
名前 説明
objectID object オブジェクトID 
int values 設定するフィールドの数。 
values回の繰り返し:
fieldID
fieldID 設定するフィールド。 
untagged-value
value フィールドに入力する値。 
応答データ
(なし)
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_FIELDID無効なフィールド。 
VM_DEAD仮想マシンが動作していない。 

MonitorInfoコマンド(5)

オブジェクトのモニター情報を返します。 VM内のすべてのスレッドが中断されている必要があります。canGetMonitorInfo権限が必要です(CapabilitiesNewを参照)。
出力データ
名前 説明
objectID object オブジェクトID 
応答データ
名前 説明
threadID owner モニターの所有者、またはnull (現在は所有されていない場合)。
int entryCount モニターが入力された回数。
int waiters モニターを待機しているスレッドの数、現在の所有者が存在しない場合は0
waiters回の繰り返し:
threadID
thread このモニターを待機しているスレッド。
エラー・データ
説明
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コマンドによる)、メソッド呼出しは続行されます。

出力データ
名前 説明
objectID object オブジェクトID 
threadID thread 呼出しを行うスレッド。 
classID clazz クラスの型。
methodID methodID 呼び出すメソッド。 
int arguments 引数の数。
arguments回の繰り返し:
value
arg 引数の値。 
int options 呼び出しオプション 
応答データ
名前 説明
value returnValue 戻り値、またはnull (例外がスローされた場合)。
tagged-objectID exception スローされた例外(存在する場合)。
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_CLASSclazzが参照型のIDではない。
INVALID_METHODIDmethodIDは、このオブジェクト型内の静的メソッドのID、またはスーパー・クラス、スーパーインタフェース、もしくは実装されたインタフェースの内の1つの静的メソッドのIDではありません。 
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
THREAD_NOT_SUSPENDED指定されたスレッドは、イベントによって中断されていない。 
VM_DEAD仮想マシンが動作していない。 

DisableCollectionコマンド(7)

指定されたオブジェクトのガベージ・コレクションが実行されないようにします。 デフォルトでは、バックエンド応答内のすべてのオブジェクトは、ターゲットVMの実行中にいつでもガベージ・コレクトが可能です。 このコマンドを呼び出すと、オブジェクトがガベージ・コレクトされないことが保証されます。 ガベージ・コレクションを再度有効にするには、EnableCollectionコマンドを使用します。

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

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

出力データ
名前 説明
objectID object オブジェクトID 
応答データ
(なし)
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
VM_DEAD仮想マシンが動作していない。 

EnableCollectionコマンド(8)

このオブジェクトのガベージ・コレクションを許可します。 デフォルトでは、JDWPにより返されるすべてのオブジェクトは、ターゲットVMでアクセス不可能になるため、ガベージ・コレクトが可能です。 このコマンドの呼出しが必要になるのは、DisableCollectionコマンドを使ってガベージ・コレクションを無効にした場合だけです。
出力データ
名前 説明
objectID object オブジェクトID 
応答データ
(なし)
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

IsCollectedコマンド(9)

オブジェクトが、ターゲットVM内でガベージ・コレクトされたかどうかを判定します。
出力データ
名前 説明
objectID object オブジェクトID 
応答データ
名前 説明
boolean isCollected オブジェクトがガベージ・コレクトされた場合はtrue、そうでない場合はfalse
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
VM_DEAD仮想マシンが動作していない。 

ReferringObjectsコマンド(10)

このオブジェクトを直接参照するオブジェクトを返します。 ガベージ・コレクションの目的で到達可能なオブジェクトのみが返されます。 オブジェクトは、その他の方法でも参照可能です。たとえばスタック・フレーム内でローカル変数を使用する方法、JNIグローバル参照を使用する方法などがあります。 このコマンドでは、このような、オブジェクトを参照しないオブジェクトは返されません。

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

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

StringReferenceコマンド・セット(10)

Valueコマンド (1)

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

ThreadReferenceコマンド・セット(11)

Nameコマンド (1)

スレッド名を返します。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
string threadName スレッドの名前。
エラー・データ
説明
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を参照)。 たとえば、このスレッドが実行中だった場合、ほかのスレッドからは依然として実行中に見えます。

出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
(なし)
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Resumeコマンド (3)

指定されたスレッドの実行を再開します。 以前にこのスレッドがフロント・エンドにより中断されたことがない場合には、このコマンドを呼び出しても効果はありません。 それ以外の場合、このスレッドについて保留中の中断のカウントが減少します。 カウントが0まで減少すると、スレッドは実行を継続します。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
(なし)
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Statusコマンド (4)

スレッドの現在のステータスを返します。 スレッド・ステータスの応答は、最後に実行されていた時点でのスレッド・ステータスを示します。中断ステータスは、スレッドの中断に関する情報(存在する場合)を提供します。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
int threadStatus スレッド・ステータス・コードの1つ。JDWP.ThreadStatus を参照 
int suspendStatus 中断ステータス・コードの1つ。JDWP.SuspendStatus を参照 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

ThreadGroupコマンド(5)

指定されたスレッドを含むスレッド・グループを返します。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
threadGroupID group このスレッドのスレッド・グループ。 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Framesコマンド (6)

中断されたスレッドの現在の呼出しスタックを返します。 フレーム・シーケンスは、現在実行中のフレームから始まり、次にその呼出し元のフレーム、と続きます。 スレッドは中断されていなければならず、返されるframeIDは、スレッドが中断されている間だけ有効です。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
int startFrame 取得する最初のフレームのインデックス。
int length 取得するフレームのカウント(-1は「残りすべて」の意味)。 
応答データ
名前 説明
int frames 取得されたフレーム数
frames回の繰り返し:
frameID
frameID このフレームのID。 
location
location このフレームの現在位置
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

FrameCountコマンド(7)

このスレッド・スタックのフレーム・カウントを返します。 スレッドは中断されていなければならず、返されるカウントはスレッドが中断されている間だけ有効です。 スレッドが中断されていない場合は、JDWP.Error.errorThreadNotSuspendedを返します。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
int frameCount このスレッド・スタックのフレーム・カウント。 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

OwnedMonitorsコマンド(8)

オブジェクトのモニターがこのスレッドから入った、というオブジェクトを返します。 スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。 canGetOwnedMonitorInfo権限が必要です(CapabilitiesNewを参照)。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
int owned 所有するモニターの数 
owned回の繰り返し:
tagged-objectID
monitor 所有するモニター 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

CurrentContendedMonitorコマンド(9)

このスレッドが待機中のオブジェクトを返します(存在する場合)。 スレッドは、モニターに入るのを待機しているか、java.lang.Object.waitメソッドを使って別のスレッドがnotifyメソッドを呼び出すのを待機している可能性があります。 スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。 canGetCurrentContendedMonitor権限が必要です(CapabilitiesNewを参照)。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
tagged-objectID monitor 競合するモニター、またはnull (競合するモニターが現在は存在しない場合)。 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
NOT_IMPLEMENTEDこの機能はこの仮想マシンに実装されていない。 
VM_DEAD仮想マシンが動作していない。 

Stopコマンド (10)

非同期の例外が発生してスレッドを停止します。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
objectID throwable 非同期の例外。 このオブジェクトは、java.lang.Throwableのインスタンスまたはサブクラスでなければならない
応答データ
(なし)
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTスレッドが既知のIDではない、または非同期の例外がガベージ・コレクトされている。
VM_DEAD仮想マシンが動作していない。 

Interruptコマンド (11)

スレッドに対し割り込みを実行します(java.lang.Thread.interruptを実行した場合と同様)。
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
(なし)
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

SuspendCountコマンド(12)

このスレッドの中断カウントを取得します。 中断カウントは、スレッド・レベルまたはVMレベルの中断コマンドによりスレッドが中断された回数(対応する再開コマンドが実行されたものは除く)です
出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
int suspendCount このスレッドの未処理の中断の回数。 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTthreadが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

OwnedMonitorsStackDepthInfoコマンド(13)

スレッドが所有するモニター・オブジェクト、およびモニターが取得されたスタック深度を返します。 実装がスタック深度を判別できない場合(JNI MonitorEnterにより取得されたモニターなど)は、スタック深度-1が返されます。スレッドは中断されている必要があります。返される情報が有効なのは、スレッドが中断されている場合のみです。 canGetMonitorFrameInfo権限が必要です(CapabilitiesNewを参照)。

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

出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
応答データ
名前 説明
int owned 所有するモニターの数 
owned回の繰り返し:
tagged-objectID
monitor 所有するモニター 
int
stack_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を参照)。

出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
value value 返す値。 
応答データ
(なし)
エラー・データ
説明
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)

スレッド・グループの名前を返します。
出力データ
名前 説明
threadGroupID group スレッド・グループのオブジェクトID。 
応答データ
名前 説明
string groupName スレッド・グループの名前。
エラー・データ
説明
INVALID_THREAD_GROUPスレッド・グループが無効。 
INVALID_OBJECTgroupが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Parentコマンド (2)

指定されたスレッド・グループを含むスレッド・グループ(存在する場合)を返します。
出力データ
名前 説明
threadGroupID group スレッド・グループのオブジェクトID。 
応答データ
名前 説明
threadGroupID parentGroup 親スレッド・グループ・オブジェクト、またはnull (指定されたスレッド・グループがトップ・レベルのスレッド・グループの場合)
エラー・データ
説明
INVALID_THREAD_GROUPスレッド・グループが無効。 
INVALID_OBJECTgroupが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

Childrenコマンド (3)

このスレッド・グループに直接含まれるライブ・スレッドおよびアクティブなスレッド・グループを返します。 子スレッド・グループ内のスレッドおよびスレッド・グループは、返されません。 スレッドは開始されると、停止されるまで、活動状態にあります。 アクティブなThreadGroupについては、java.lang.ThreadGroupを参照してください。
出力データ
名前 説明
threadGroupID group スレッド・グループのオブジェクトID。 
応答データ
名前 説明
int childThreads 子スレッドの数。 
childThreads回の繰り返し:
threadID
childThread 直接の子スレッドID。
int childGroups 子スレッド・グループの数。 
childGroups回の繰り返し:
threadGroupID
childGroup 直接の子スレッド・グループのID。
エラー・データ
説明
INVALID_THREAD_GROUPスレッド・グループが無効。 
INVALID_OBJECTgroupが既知のIDではない。 
VM_DEAD仮想マシンが動作していない。 

ArrayReferenceコマンド・セット(13)

Lengthコマンド (1)

指定された配列内のコンポーネントの数を返します。
出力データ
名前 説明
arrayID arrayObject 配列のオブジェクトID。 
応答データ
名前 説明
int arrayLength 配列の長さ。 
エラー・データ
説明
INVALID_OBJECTarrayObjectが既知のIDではない。 
INVALID_ARRAY配列が無効。 
VM_DEAD仮想マシンが動作していない。 

GetValuesコマンド(2)

配列コンポーネントの範囲を返します。 指定された範囲は、配列の境界内にある必要があります。
出力データ
名前 説明
arrayID arrayObject 配列のオブジェクトID。 
int firstIndex 取得する最初のインデックス。
int length 取得するコンポーネントの数。
応答データ
名前 説明
arrayregion values 取得した値。 値がオブジェクトの場合は、タグ付けされた値になる。それ以外の場合は、タグ付けされていない値になる
エラー・データ
説明
INVALID_LENGTHインデックスがこの配列の最後を越えている場合。 
INVALID_OBJECTarrayObjectが既知のIDではない。 
INVALID_ARRAY配列が無効。 
VM_DEAD仮想マシンが動作していない。 

SetValuesコマンド(3)

配列コンポーネントの範囲を設定します。 指定された範囲は、配列の境界内にある必要があります。 プリミティブ値の場合、各値の型と配列コンポーネントの型は正確に一致している必要があります。 オブジェクト値の場合、値型から配列コンポーネント型への広範な参照変換が存在し、かつ配列コンポーネント型がロードされている必要があります。
出力データ
名前 説明
arrayID arrayObject 配列のオブジェクトID。 
int firstIndex 設定する最初のインデックス。
int values 設定する値の数。 
values回の繰り返し:
untagged-value
value 設定する値。 
応答データ
(なし)
エラー・データ
説明
INVALID_LENGTHインデックスがこの配列の最後を越えている場合。 
INVALID_OBJECTarrayObjectが既知のIDではない。 
INVALID_ARRAY配列が無効。 
VM_DEAD仮想マシンが動作していない。 

ClassLoaderReferenceコマンド・セット(14)

VisibleClassesコマンド(1)

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

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

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

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

EventRequestコマンド・セット(15)

Setコマンド (1)

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

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

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

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

int
count イベントを発生させる前のカウント。 1回かぎりのイベントで使用する。
Case Conditional - modKindが2の場合:
式による条件
int
exprID 将来の使用のために予約済み
Case ThreadOnly - modKindが3の場合:
レポートされるイベントを、指定されたスレッド内のものに制限する。 この修飾子は、クラスのアンロードを除く、すべての種類のイベントに使用できる。 
threadID
thread 要求されたスレッド
Case ClassOnly - modKindが4の場合:
クラス準備イベントの場合に、この要求で生成されたイベントを制限して、指定された参照型および任意のサブタイプの準備となるようにする。 モニター待機およびモニター待機終了イベントの場合、この要求で生成されるイベントを、指定された参照型またはその任意のサブタイプであるモニター・オブジェクトを保持するイベントに限定する。 それ以外のイベントの場合、この要求で生成されるイベントを、指定された参照型またはその任意のサブタイプ内で発生したものに限定する。 イベントは、指定された参照型に安全にキャストできる参照型の中であれば、任意の位置で生成される。 この修飾子は、クラスのアンロード、スレッド開始、およびスレッド終了を除く、すべての種類のイベントで使用できる。 
referenceTypeID
clazz 要求されたクラス
Case ClassMatch - modKindが5の場合:
レポートされるイベントを、指定された限定的な正規表現に名前が一致するクラスのイベントに限定する。 クラス準備イベントの場合、準備されたクラス名で判定される。 クラスのアンロード・イベントの場合、アンロードされたクラス名で判定される。 モニター待機および待機終了イベントの場合、モニター・オブジェクトのクラス名が一致する。 それ以外のイベントの場合、イベントが発生した位置のクラス名で判定される。 この修飾子は、スレッド開始およびスレッド終了を除く、すべての種類のイベントで使用できる。 
string
classPattern 要求されたクラス・パターン。 マッチ条件は、指定されたクラス・パターンに正確に一致する場合と、パターンの最初または最後が「*」である場合(たとえば、「*.Foo」、「java.*」)に限定される。 
Case ClassExclude - modKindが6の場合:
レポートされるイベントを、指定された限定的な正規表現に名前が一致しないクラスのイベントに限定する。 クラス準備イベントの場合、準備されたクラス名で判定される。 クラスのアンロード・イベントの場合、アンロードされたクラス名で判定される。 モニター待機および待機終了イベントの場合、モニター・オブジェクトのクラス名が一致する。 それ以外のイベントの場合、イベントが発生した位置のクラス名で判定される。 この修飾子は、スレッド開始およびスレッド終了を除く、すべての種類のイベントで使用できる。 
string
classPattern 許可されないクラス・パターン。 マッチ条件は、指定されたクラス・パターンに正確に一致する場合と、パターンの最初または最後が「*」である場合(たとえば、「*.Foo」、「java.*」)に限定される。 
Case LocationOnly - modKindが7の場合:
レポートされるイベントを、指定された場所で発生するイベントに限定する。 この修飾子は、ブレークポイント、フィールド・アクセス、フィールド変更、ステップ、および例外の各イベントで使用できる。 
location
loc 要求される場所
Case ExceptionOnly - modKindが8の場合:
レポートされる例外を、クラスと、それがキャッチされるかどうかを基準にして限定する。 この修飾子は、例外イベントでのみ使用できる。 
referenceTypeID
exceptionOrNull レポートされる例外。 null (0)は、すべての種類の例外をレポートするという意味。 null以外の場合は、レポートされる例外イベントを、指定された型またはその任意のサブタイプに限定する。 
boolean
caught キャッチされた例外をレポートする
boolean
uncaught キャッチされなかった例外をレポートする。 例外がキャッチされたかどうかは、例外がスローされた時点でいつも判断できるとはかぎらない。 詳細は、複合イベントの例外イベントのキャッチ位置に関する説明を参照。 
Case FieldOnly - modKindが9の場合:
レポートされるイベントを、指定されたフィールドで発生するイベントに限定する。 この修飾子は、フィールド・アクセスおよびフィールド変更イベントでのみ使用できる。 
referenceTypeID
declaring フィールドが宣言されている型。
fieldID
fieldID 要求されたフィールド
Case Step - modKindが10の場合:
レポートされるステップ・イベントを、深さおよびサイズの制限を満たすものに限定する。 この修飾子は、ステップ・イベントでのみ使用できる。 
threadID
thread ステップ実行を行うスレッド
int
size 各ステップのサイズ。 JDWP.StepSize を参照  
int
depth 相対呼出しスタックの制限。 JDWP.StepDepth を参照  
Case InstanceOnly - modKindが11の場合:
レポートされるイベントを、指定されたオブジェクトがアクティブな「this」オブジェクトであるイベントに限定する。 staticメソッドの場合のマッチ条件は、nullオブジェクト。 この修飾子は、クラス準備、クラスのアンロード、スレッド開始、およびスレッド終了を除く、すべての種類のイベントで使用できる。 この修飾子は、JDWPバージョン1.4で導入された。
objectID
instance 要求された「this」オブジェクト
Case SourceNameMatch - modKindが12の場合:
レポートされるクラス準備イベントを、指定された限定的な正規表現に一致するソース名を持つ参照型に限定する。 ソース名は、参照型のSourceDebugExtensionにより決定される。 この修飾子は、クラス準備イベントでのみ使用できる。 これはJDWPバージョン1.6以降。 canUseSourceNameFilters権限が必要(CapabilitiesNewを参照)。
string
sourceNamePattern 要求されたソース名パターン。 マッチ条件は、指定されたパターンに正確に一致する場合と、パターンの最初または最後が「*」である場合(たとえば、「*.Foo」、「java.*」)に限定される。 
応答データ
名前 説明
int requestID 作成された要求の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に一致するイベント要求だけが解除されます。 一致するイベント要求が存在しない場合、コマンドは無操作で、エラーになりません。 自動的に生成されるイベントには、対応するイベント要求がないため、このコマンドで解除されない場合があります。
出力データ
名前 説明
byte eventKind クリアするイベント・タイプ
int requestID クリアする要求のID 
応答データ
(なし)
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 
INVALID_EVENT_TYPE指定されたイベント・タイプのIDが認識されない。 

ClearAllBreakpointsコマンド(3)

設定されているすべてのブレークポイントを削除します。設定されているブレークポイントが存在しない場合は無操作です。
出力データ
(なし)
応答データ
(なし)
エラー・データ
説明
VM_DEAD仮想マシンが動作していない。 

StackFrameコマンド・セット(16)

GetValuesコマンド(1)

指定されたフレーム内の1つまたは複数の局所変数の値を返します。 各変数は、フレームのコード・インデックスで可視である必要があります。 局所変数の情報が利用できなくても、フロント・エンドが正しい局所変数インデックスを判別できる場合は、値の取得が可能です。 一般に、局所変数テーブルの情報にアクセスしなくても、メソッド・シグニチャからメソッド引数について変数のインデックスを判別できます。
出力データ
名前 説明
threadID thread フレームのスレッド。 
frameID frame フレームID。 
int slots 取得する値の数。 
slots回の繰り返し:
int
slot フレーム内の局所変数のインデックス。 
byte
sigbyte 変数の型を識別するタグ
応答データ
名前 説明
int values 取得された値の数。slotsの取得する値の数と常に等しい。
values回の繰り返し:
value
slotValue 局所変数の値。 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_FRAMEID無効なjframeID。 
INVALID_SLOT無効なスロット。
VM_DEAD仮想マシンが動作していない。 

SetValuesコマンド(2)

1つまたは複数の局所変数の値を設定します。 各変数は、現在のフレーム・コード・インデックスで可視である必要があります。 プリミティブ値の場合、値の型と変数の型は正確に一致している必要があります。 オブジェクト値の場合、値の型から変数の型への広範な参照変換が存在し、かつ変数の型がロードされている必要があります。

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

出力データ
名前 説明
threadID thread フレームのスレッド。 
frameID frame フレームID。 
int slotValues 設定する値の数。 
slotValues回の繰り返し:
int
slot スロットID。
value
slotValue 設定する値。 
応答データ
(なし)
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_FRAMEID無効なjframeID。 
VM_DEAD仮想マシンが動作していない。 

ThisObjectコマンド(3)

このフレームについての「this」参照の値を返します。 フレームのメソッドがstaticまたはネイティブの場合、応答にはnullオブジェクト参照が含まれます。
出力データ
名前 説明
threadID thread フレームのスレッド。 
frameID frame フレームID。 
応答データ
名前 説明
tagged-objectID objectThis このフレームについての「this」オブジェクト。 
エラー・データ
説明
INVALID_THREAD渡されたスレッドがnull、有効でないスレッド、または終了している。 
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
INVALID_FRAMEID無効なjframeID。 
VM_DEAD仮想マシンが動作していない。 

PopFramesコマンド(4)

スレッド・スタックの一番上のスタック・フレームを「frame」までポップします。 このコマンドを実行するには、スレッドが中断されている必要があります。 一番上のスタック・フレームは破棄され、「frame」の前のスタック・フレームが現在のフレームになります。 オペランド・スタックは回復します。引数が再度追加され、呼出しがinvokestaticではなかった場合は、objectrefも再度追加されます。 Java仮想マシン・プログラム・カウンタは、呼出し命令の操作コードに戻されます。

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

出力データ
名前 説明
threadID thread スレッドのオブジェクトID。 
frameID frame フレーム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)

このクラス・オブジェクトによりリフレクトされた参照型を返します。
出力データ
名前 説明
classObjectID classObject クラス・オブジェクト。 
応答データ
名前 説明
byte refTypeTag あとに続く参照型の種類。 
referenceTypeID typeID リフレクトされた参照型
エラー・データ
説明
INVALID_OBJECTこの参照型はすでにアンロードされ、ガベージ・コレクトされた。 
VM_DEAD仮想マシンが動作していない。 

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

Nameコマンド (1)

このモジュールの名前を返します。

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

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

ClassLoaderコマンド(2)

このモジュールのクラス・ローダーを返します。

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

出力データ
名前 説明
moduleID module このモジュール。
応答データ
名前 説明
classLoaderID classLoader モジュール・クラス・ローダー。
エラー・データ
説明
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に設定されます。

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

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

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

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

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

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

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

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

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

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

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

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

int
requestID イベントを生成させたリクエスト 
threadID
thread 待機したスレッド
tagged-objectID
object モニター・オブジェクト参照 
location
location 待機が発生した位置
boolean
timed_out タイム・アウトした場合true
Case Exception - eventKindがJDWP.EventKind.EXCEPTIONの場合:
ターゲットVMの例外通知。 例外が非ネイティブ・メソッドからスローされた場合、例外イベントは例外がスローされた位置で生成される。 例外がネイティブ・メソッドからスローされた場合、例外がスローされたあとの最初の非ネイティブ位置で例外イベントが生成される。 
int
requestID イベントを生成させたリクエスト 
threadID
thread 例外付きのスレッド
location
location 例外がスローされた位置(または、ネイティブ・メソッドからスローされた場合は、スローされたあとの最初の非ネイティブの位置)
tagged-objectID
exception スローされた例外
location
catchLocation キャッチされた位置、または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によっては、ずっと以前に作成されたスレッドである可能性もあるので、注意を要する。 

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

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

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

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

byte
refTypeTag 参照型の種類。 JDWP.TypeTag を参照  
referenceTypeID
typeID 準備中の型
string
signature 型シグニチャ 
int
status 型のステータス。 JDWP.ClassStatus を参照  
Case ClassUnload - eventKindがJDWP.EventKind.CLASS_UNLOADの場合:
ターゲットVMのクラス・アンロードの通知。

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

int
requestID イベントを生成させたリクエスト 
string
signature 型シグニチャ 
Case FieldAccess - eventKindがJDWP.EventKind.FIELD_ACCESSの場合:
ターゲットVMのフィールド・アクセスの通知。 フィールドの変更は、フィールド・アクセスとは見なされない。 canWatchFieldAccess権限が必要(CapabilitiesNewを参照)。
int
requestID イベントを生成させたリクエスト 
threadID
thread アクセス中のスレッド
location
location アクセスの位置
byte
refTypeTag 参照型の種類。 JDWP.TypeTag を参照  
referenceTypeID
typeID フィールドの型 
fieldID
fieldID アクセスされているフィールド
tagged-objectID
object アクセスされているオブジェクト(staticの場合はnull=0)
Case FieldModification - eventKindがJDWP.EventKind.FIELD_MODIFICATIONの場合:
ターゲットVMのフィールド変更の通知。 canWatchFieldModification権限が必要(CapabilitiesNewを参照)。
int
requestID イベントを生成させたリクエスト 
threadID
thread 変更中のスレッド
location
location 変更の位置
byte
refTypeTag 参照型の種類。 JDWP.TypeTag を参照  
referenceTypeID
typeID フィールドの型 
fieldID
fieldID 変更されているフィールド
tagged-objectID
object 変更されているオブジェクト(staticの場合はnull=0)
value
valueToBe 割り当てられる値
Case VMDeath - eventKindがJDWP.EventKind.VM_DEATHの場合:
 
int
requestID イベントを生成させたリクエスト 

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_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、またはRecordクラス属性が異なり、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それ以外の場合、通常の仮想呼び出し(インスタンス・メソッドのみ)