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回の繰り返し: byterefTypeTag あとに続く参照型の種類。 referenceTypeIDtypeID 対応するロードされた参照型 intstatus 現在のクラスのステータス。 - エラー・データ
値 説明 VM_DEAD 仮想マシンが動作していない。
AllClassesコマンド(3)
ターゲットVMによって現在ロードされているクラスすべての参照型を返します。 JVM TI GetLoadedClassesを参照してください。- 出力データ
- (なし)
- 応答データ
-
型 名前 説明 int classes あとに続く参照型の数。 classes回の繰り返し: byterefTypeTag あとに続く参照型の種類。 referenceTypeIDtypeID ロードされた参照型 stringsignature ロードされた参照型のJNIシグニチャ intstatus 現在のクラスのステータス。 - エラー・データ
値 説明 VM_DEAD 仮想マシンが動作していない。
AllThreadsコマンド(4)
ターゲットVMで実行中のすべてのスレッドを返します。 返されるリストには、java.lang.Threadで作成されたスレッド、JNIを介してターゲットVMに接続されたすべてのネイティブ・スレッド、およびターゲットVMにより作成されたシステム・スレッドが含まれます。 開始されていないスレッド、および実行の完了したスレッドは、リストに含まれません。- 出力データ
- (なし)
- 応答データ
-
型 名前 説明 int threads あとに続くスレッドの数 threads回の繰り返し: threadIDthread 実行中のスレッド - エラー・データ
値 説明 VM_DEAD 仮想マシンが動作していない。
TopLevelThreadGroupsコマンド(5)
親を持たないスレッド・グループをすべて返します。 このコマンドは、既存のスレッド・グループの(1つまたは複数の)ツリーを構築する最初のステップとして使用できます。- 出力データ
- (なし)
- 応答データ
-
型 名前 説明 int groups あとに続くスレッド・グループの数 groups回の繰り返し: threadGroupIDgroup トップ・レベルのスレッド・グループ - エラー・データ
値 説明 VM_DEAD 仮想マシンが動作していない。
Disposeコマンド (6)
この仮想マシンのミラーを無効にします。 ターゲットVMへの通信チャネルが閉じられ、ターゲットVMは、このデバッガまたは別のデバッガからの次の接続を受け付ける準備をします。これには、次のような作業が含まれます。- すべてのイベント要求が取り消される。
- スレッド・レベルのsuspendコマンドまたはVMレベルのsuspendコマンドによって一時停止されたすべてのスレッドは、実行するのに必要な回数だけ再開されます。
- ガベージ・コレクションが無効にされたすべての状況で、再度有効にされる
この仮想マシンを起源とするリソース(オブジェクト参照や参照型など)は、無効になります。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラー・データ
- (なし)
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回の繰り返し: stringpath classpathの1コンポーネント int bootclasspaths bootclasspath内のパスの数。 bootclasspaths回の繰り返し: stringpath bootclasspathの1コンポーネント - エラー・データ
値 説明 VM_DEAD 仮想マシンが動作していない。
DisposeObjectsコマンド(14)
オブジェクトIDのリストを解放します。 リスト内の各オブジェクトに対して、以下の処理が適用されます。 バックエンドによって保持されている参照の回数(参照カウント)が、refCntによって減らされます。 その後、参照カウントが0以下であれば、そのIDは解放されます。 解放されたIDに関連付けられているバックエンド・リソースがあれば、そのリソースも解放され、オブジェクトのガベージ・コレクションが無効にされていれば、再度有効にされます。 このコマンドを送った側は、解放されたIDを参照するコマンドをそれ以降は送らないようにしなければなりません。このコマンドの使用は、必須ではありません。 このコマンドが送られない場合、各IDに関連付けられているリソースは、対応するオブジェクトのガベージ・コレクションの実行後に、バックエンドにより解放されます。 このコマンドのもっとも効果的な利用法は、大量のオブジェクト(大規模な配列など)がバックエンドから取得されているが、すぐにはガベージ・コレクションが行われない場合に、バックエンドの負荷を軽減することです。
このコマンドで解放されたIDは、バックエンドにより再利用されることがあります。この説明では、参照がカウントされていることを想定しており、バックエンドは同等の動作をする任意の実装を使用できます。
- 出力データ
-
型 名前 説明 int requests あとに続くオブジェクト破棄要求の数 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エラーを返します。- 出力データ
- (なし)
- 応答データ
-
型 名前 説明 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がクラスを再定義するときにメソッドを追加できるかどうか @Deprecated(since="15") JVM TIベースのJDWPバックエンドでは、この機能はtrueに設定されません。
boolean canUnrestrictedlyRedefineClasses 通常は制限されている方法でVMがクラスを再定義できるか。 @Deprecated(since="15") JVM TIベースのJDWPバックエンドでは、この機能はtrueに設定されません。
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機能が存在しないかぎり、再定義はJVM TI RedefineClassesで説明されている制限に従う必要があります。
canRedefineClasses権限が必要です(CapabilitiesNewを参照)。
@Deprecated(since="15") canRedefineClasses機能に加えて、ターゲットVMには、クラスの再定義時にメソッドを追加するcanAddMethod機能、または通常は制限されている方法でクラスを再定義するcanUnrestrictedlyRedefineClasses機能が必要です。
- 出力データ
-
型 名前 説明 int classes あとに続く参照型の数。 classes回の繰り返し: referenceTypeIDrefType 参照型。 intclassfile 定義するクラスのバイト数(下) classfile回の繰り返し:byteclassbyte JVMクラス・ファイル形式のバイト。 - 応答データ
- (なし)
- エラー・データ
値 説明 INVALID_CLASS refTypeの1つが参照型のIDではない。 INVALID_OBJECT refTypeの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、PermittedSubclassesまたはRecordクラス属性があり、canUnrestrictedlyRedefineClassesはfalseです。 VM_DEAD 仮想マシンが動作していない。
SetDefaultStratumコマンド(19)
デフォルトの層を設定します。 canSetDefaultStratum権限が必要です(CapabilitiesNewを参照)。- 出力データ
-
型 名前 説明 string stratumID デフォルト層、または参照型デフォルトを使用するための空の文字列。 - 応答データ
- (なし)
- エラー・データ
値 説明 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
AllClassesWithGenericコマンド(20)
ターゲットVMによって現在ロードされているクラスすべての参照型を返します。 各クラスに対してJNIシグニチャとジェネリック・シグニチャの両方が返されます。 汎用シグネチャについては、「Java Virtual Machine仕様」のsignature属性の項を参照してください。 これはJDWPバージョン1.5以降です。- 出力データ
- (なし)
- 応答データ
-
型 名前 説明 int classes あとに続く参照型の数。 classes回の繰り返し: byterefTypeTag あとに続く参照型の種類。 referenceTypeIDtypeID ロードされた参照型 stringsignature ロードされた参照型のJNIシグニチャ。 stringgenericSignature ロードされた参照型のジェネリック・シグニチャ、ない場合は空の文字列。 intstatus 現在のクラスのステータス。 - エラー・データ
値 説明 VM_DEAD 仮想マシンが動作していない。
InstanceCountsコマンド(21)
入力リスト内の各参照型のインスタンス数を返します。 ガベージ・コレクト目的で到達可能なインスタンスだけがカウントされます。 アンロード済みなどの理由で参照型が無効な場合、インスタンス・カウントとしてゼロが返されます。これはJDWPバージョン1.6以降。 canGetInstanceInfo権限が必要です(CapabilitiesNewを参照)。
- 出力データ
-
型 名前 説明 int refTypesCount 全参照型の数。 負でない数値。 refTypesCount回の繰り返し: referenceTypeIDrefType 参照型ID。 - 応答データ
-
型 名前 説明 int counts あとに続く回数。 counts回の繰り返し: longinstanceCount 「出力データ」内の参照型のインスタンス数。 - エラー・データ
値 説明 ILLEGAL_ARGUMENT refTypesCountがゼロより小さい。 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
AllModulesコマンド(22)
ターゲットVMのすべてのモジュールを返します。JDWPバージョン9以降。
- 出力データ
- (なし)
- 応答データ
-
型 名前 説明 int modules 続くモジュールの数。 繰り返しmodules回: moduleIDmodule モジュールの1つ。 - エラー・データ
値 説明 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
ReferenceTypeコマンド・セット(2)
Signatureコマンド (1)
参照型の型シグネチャを返します。 型シグネチャの形式は、JVM TI GetClassSignatureで指定されている形式と同じです。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 string signature 参照型のJNIシグニチャ。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
ClassLoaderコマンド(2)
指定された参照型をロードしたjava.lang.ClassLoaderのインスタンスを返します。 その参照型がシステム・クラス・ローダーによりロードされた場合、返されるオブジェクトIDはnullになります。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 classLoaderID classLoader 参照型のクラス・ローダー。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Modifiersコマンド (3)
参照型の修飾子(アクセス・フラグともいう)を返します。 返されるビット・マスクには、参照型の宣言に関する情報が含まれます。 参照型が配列またはプリミティブ・クラス(たとえば、java.lang.Integer.TYPE)である場合、返されるビット・マスクの値は定義されません。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int modBits 「Java Virtual Machine仕様」の第4章 で定義されている修飾子ビット - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Fieldsコマンド (4)
参照型の各フィールドに関する情報を返します。 継承したフィールドは含まれません。 フィールド・リストには、コンパイラにより作成されたすべての合成フィールドが含まれます。 フィールドは、クラス・ファイル内に出現する順序で返されます。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int declared 宣言されているフィールドの数。 declared回の繰り返し: fieldIDfieldID フィールドID。 stringname フィールドの名前。 stringsignature フィールドのJNIシグニチャ。 intmodBits フィールド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、「Java Virtual Machine仕様」の第4章 で定義されています。 また、合成属性の権限を利用可能な場合には、 0xf0000000
ビットは、そのフィールドが合成であることを示す。 - エラー・データ
値 説明 CLASS_NOT_PREPARED クラスがロードされているが、まだ準備されていない。 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Methodsコマンド (5)
参照型の各メソッドに関する情報を返します。 継承されたメソッドは、含まれません。 メソッドのリストには、コンストラクタ(名前「<init>」で識別される)、存在する場合には初期化メソッド(名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。 メソッドは、クラス・ファイル内に出現する順序で返されます。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int declared 宣言されているメソッドの数。 declared回の繰り返し: methodIDmethodID メソッドID。 stringname メソッドの名前。 stringsignature メソッドのJNIシグニチャ。 intmodBits メソッド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、「Java Virtual Machine仕様」の第4章 で定義されています。 また、合成属性の権限を利用可能な場合には、 0xf0000000
ビットは、そのメソッドが合成であることを示す。 - エラー・データ
値 説明 CLASS_NOT_PREPARED クラスがロードされているが、まだ準備されていない。 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
GetValuesコマンド(6)
参照型の1つ以上のstaticフィールドの値を返します。 各フィールドは、参照型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を取得できます。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 int fields 取得する値の数 fields回の繰り返し: fieldIDfieldID 取得するフィールド - 応答データ
-
型 名前 説明 int values 返される値の数。fieldsの取得する値の数と常に等しい。 values回の繰り返し: valuevalue フィールドの値 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 INVALID_FIELDID 無効なフィールド。 VM_DEAD 仮想マシンが動作していない。
SourceFileコマンド(7)
参照型が宣言されたソース・ファイルの名前を返します。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 string sourceFile ソース・ファイルの名前。 ファイルのパス情報は含まれない - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 ABSENT_INFORMATION ソース・ファイルの属性が存在しない。 VM_DEAD 仮想マシンが動作していない。
NestedTypesコマンド(8)
この型のすぐ内側にネストしたクラスとインタフェースを返します。これらの型のさらに内側にネストしたタイプは含まれません。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int classes ネストされたクラスとインタフェースの数 classes回の繰り返し: byterefTypeTag あとに続く参照型の種類。 referenceTypeIDtypeID ネストされたクラスまたはインタフェースのID。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Statusコマンド (9)
参照型の現在のステータスを返します。 ステータスは、「Java Virtual Machine仕様」の2.1.6の項で説明されているように、参照型が初期化された範囲を示します。 クラスがリンクしている場合は、返されるステータス・ビットのPREPAREDおよびVERIFIEDビットが設定されます。 クラスが初期化されている場合は、返されるステータス・ビットのINITIALIZEDビットが設定されます。 初期化中にエラーが発生した場合は、返されるステータス・ビットのERRORビットが設定されます。 返されるステータス・ビットは、配列型およびプリミティブ・クラス(java.lang.Integer.TYPEなど)の場合は未定義です。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int status ステータス・ビット。JDWP.ClassStatusを参照 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Interfacesコマンド (10)
このクラスによる実装が宣言されたインタフェースを返します。 間接的に実装された(実装済みのインタフェースから継承した、またはスーパー・クラスが実装した)インタフェースは含まれません。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int interfaces 実装したインタフェースの数 interfaces回の繰り返し: interfaceIDinterfaceType 実装されたインタフェース。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
ClassObjectコマンド(11)
この型に対応するクラス・オブジェクトを返します。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 classObjectID classObject クラス・オブジェクト。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
SourceDebugExtensionコマンド(12)
SourceDebugExtension属性の値を返します。 これはJDWPバージョン1.4以降です。 canGetSourceDebugExtension権限が必要です(CapabilitiesNewを参照)。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 string extension 拡張属性 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 ABSENT_INFORMATION 拡張属性が指定されていない。 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
SignatureWithGenericコマンド(13)
参照型のJNIシグネチャを返します。存在する場合はジェネリック・シグネチャも一緒に返します。 汎用シグネチャについては、「Java Virtual Machine仕様」のsignature属性の項を参照してください。 これはJDWPバージョン1.5以降です。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 string signature 参照型のJNIシグニチャ。 string genericSignature 参照型のジェネリック・シグニチャ、ない場合は空の文字列。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
FieldsWithGenericコマンド(14)
参照型の各フィールドに関する情報(存在する場合はジェネリック・シグニチャを含む)を返します。 継承したフィールドは含まれません。 フィールド・リストには、コンパイラにより作成されたすべての合成フィールドが含まれます。 フィールドは、クラス・ファイル内に出現する順序で返されます。 汎用シグネチャについては、「Java Virtual Machine仕様」のsignature属性の項を参照してください。 これはJDWPバージョン1.5以降です。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int declared 宣言されているフィールドの数。 declared回の繰り返し: fieldIDfieldID フィールドID。 stringname フィールドの名前。 stringsignature フィールドのJNIシグニチャ。 stringgenericSignature フィールドのジェネリック・シグニチャ、ない場合は空の文字列。 intmodBits フィールド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、「Java Virtual Machine仕様」の第4章 で定義されています。 また、合成属性の権限を利用可能な場合には、 0xf0000000
ビットは、そのフィールドが合成であることを示す。 - エラー・データ
値 説明 CLASS_NOT_PREPARED クラスがロードされているが、まだ準備されていない。 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
MethodsWithGenericコマンド(15)
参照型の各メソッドに関する情報(存在する場合はジェネリック・シグニチャを含む)を返します。 継承したメソッドは含まれません。 メソッドのリストには、コンストラクタ(名前「<init>」で識別される)、存在する場合には初期化メソッド(名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。 メソッドは、クラス・ファイル内に出現する順序で返されます。 汎用シグネチャについては、「Java Virtual Machine仕様」のsignature属性の項を参照してください。 これはJDWPバージョン1.5以降です。- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 - 応答データ
-
型 名前 説明 int declared 宣言されているメソッドの数。 declared回の繰り返し: methodIDmethodID メソッドID。 stringname メソッドの名前。 stringsignature メソッドのJNIシグニチャ。 stringgenericSignature メソッドのジェネリック・シグニチャ、ない場合は空の文字列。 intmodBits メソッド宣言に関する補足情報を提供する修飾子ビット・フラグ(アクセス・フラグともいう)。 個々のフラグ値は、「Java Virtual Machine仕様」の第4章 で定義されています。 また、合成属性の権限を利用可能な場合には、 0xf0000000
ビットは、そのメソッドが合成であることを示す。 - エラー・データ
値 説明 CLASS_NOT_PREPARED クラスがロードされているが、まだ準備されていない。 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Instancesコマンド (16)
この参照型のインスタンスを返します。 ガベージ・コレクト目的で到達可能なインスタンスだけが返されます。これはJDWPバージョン1.6以降。 canGetInstanceInfo権限が必要です(CapabilitiesNewを参照)。
- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型ID。 int maxInstances 返されるインスタンスの最大数。 負でない数値。 ゼロの場合、すべてのインスタンスが返される。 - 応答データ
-
型 名前 説明 int instances あとに続くインスタンスの数。 instances回の繰り返し: tagged-objectIDinstance この参照型のインスタンス。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 ILLEGAL_ARGUMENT maxInstancesがゼロより小さい。 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
ClassFileVersionコマンド(17)
Java仮想マシン仕様のクラス・ファイル形式で定義されているクラス・ファイルのメジャー・バージョン番号とマイナー・バージョン番号を返します。これはJDWPバージョン1.6以降。
- 出力データ
-
型 名前 説明 referenceTypeID refType クラス。 - 応答データ
-
型 名前 説明 int majorVersion メジャー・バージョン番号 int minorVersion マイナー・バージョン番号 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 ABSENT_INFORMATION プリミティブ型および配列型のクラス・ファイル・バージョン情報が存在しない。 VM_DEAD 仮想マシンが動作していない。
ConstantPoolコマンド(18)
定数プールのrawバイトを、「Java Virtual Machine仕様」のクラス・ファイル形式のconstant_poolアイテムの形式で返します。これはJDWPバージョン1.6以降。 canGetConstantPool権限が必要です(CapabilitiesNewを参照)。
- 出力データ
-
型 名前 説明 referenceTypeID refType クラス。 - 応答データ
-
型 名前 説明 int count 定数プール・エントリの総数に1を加えた値。 これは、「Java Virtual Machine仕様」のクラス・ファイル形式のconstant_pool_countアイテムに対応します。 int bytes bytes回の繰り返し: bytecpbytes rawバイトの定数プール - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 NOT_IMPLEMENTED ターゲット仮想マシンが定数プール情報の取得をサポートしていない。 ABSENT_INFORMATION プリミティブ型および配列型の定数プール情報が存在しない。 VM_DEAD 仮想マシンが動作していない。
モジュール・コマンド(19)
この参照型が属するモジュールを返します。JDWPバージョン9以降。
- 出力データ
-
型 名前 説明 referenceTypeID refType 参照型。 - 応答データ
-
型 名前 説明 moduleID module この参照型が属するモジュール。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
ClassTypeコマンド・セット(3)
Superclassコマンド (1)
クラスの直属のスーパー・クラスを返します。- 出力データ
-
型 名前 説明 classID clazz クラス型ID。 - 応答データ
-
型 名前 説明 classID superclass スーパー・クラス(java.lang.ObjectのクラスIDが指定されている場合は、null)。 - エラー・データ
値 説明 INVALID_CLASS clazzがクラスのIDではない。 INVALID_OBJECT clazzが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
SetValuesコマンド(2)
1つ以上のstaticフィールドの値を設定します。 各フィールドは、クラス型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を設定できます。 最後のフィールドを設定することはできません。プリミティブ値の場合、値の型とフィールドの型は正確に一致している必要があります。 オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。- 出力データ
-
型 名前 説明 classID clazz クラス型ID。 int values 設定するフィールドの数。 values回の繰り返し: fieldIDfieldID 設定するフィールド。 untagged-valuevalue フィールドに入力する値。 - 応答データ
- (なし)
- エラー・データ
値 説明 INVALID_CLASS clazzがクラスのIDではない。 CLASS_NOT_PREPARED クラスがロードされているが、まだ準備されていない。 INVALID_OBJECT clazzが既知の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回の繰り返し: valuearg 引数の値。 int options 呼び出しオプション - 応答データ
-
型 名前 説明 value returnValue 戻り値。 tagged-objectID exception スローされた例外。 - エラー・データ
値 説明 INVALID_CLASS clazzがクラスのIDではない。 INVALID_OBJECT clazzが既知のIDではない。 INVALID_METHODID methodIDは、このクラス型内、またはスーパー・クラス内の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回の繰り返し: valuearg 引数の値。 int options コンストラクタ呼出しのオプション - 応答データ
-
型 名前 説明 tagged-objectID newObject 新規に作成されたオブジェクト、またはコンストラクタが例外をスローする場合はnull。 tagged-objectID exception スローされた例外(存在する場合)、またはnull。 - エラー・データ
値 説明 INVALID_CLASS clazzがクラスのIDではない。 INVALID_OBJECT clazzが既知のIDではない、またはオブジェクト・パラメータの値が既知のIDではない。 INVALID_METHODID methodIDがメソッドの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回の繰り返し: valuearg 引数の値。 int options 呼び出しオプション - 応答データ
-
型 名前 説明 value returnValue 戻り値。 tagged-objectID exception スローされた例外。 - エラー・データ
値 説明 INVALID_CLASS clazzがインタフェースのIDではない。 INVALID_OBJECT clazzが既知のIDではない。 INVALID_METHODID methodIDは、このインタフェース型内の静的メソッドの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回の繰り返し: longlineCodeIndex 行の初期コード・インデックス、start <= lineCodeIndex < end intlineNumber 行番号。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 INVALID_METHODID methodIDがメソッドのIDではない。 VM_DEAD 仮想マシンが動作していない。
VariableTableコマンド(2)
メソッドの変数情報を返します。 変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。 インスタンス・メソッドの場合、「this」参照がテーブルに含まれます。 また、合成変数が存在する場合もあります。- 出力データ
-
型 名前 説明 referenceTypeID refType クラス。 methodID methodID メソッド。 - 応答データ
-
型 名前 説明 int argCnt 引数で使用されるフレーム内のワード数。 8バイトの引数は2ワードを使用し、その他の引数は1ワードを使用する。 int slots 変数の数。 slots回の繰り返し: longcodeIndex 変数が可視状態にある最初のコード・インデックス(符号なし)。 length
と一緒に使う。 この変数は、現在のcodeIndex
<= 現在のフレーム・コード・インデックス<codeIndex + length
stringname 変数の名前。 stringsignature 変数型のJNIシグニチャ。 intlength codeIndex
と一緒に使う符号なしの値。 この変数は、現在のcodeIndex
<= 現在のフレーム・コード・インデックス<code index + length
intslot フレーム内の局所変数のインデックス - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 INVALID_METHODID methodIDがメソッドのIDではない。 ABSENT_INFORMATION メソッドの変数情報がない。 VM_DEAD 仮想マシンが動作していない。
Bytecodesコマンド (3)
「Java Virtual Machine仕様」で定義されているメソッド・バイトコードを取得します。 canGetBytecodes権限が必要です(CapabilitiesNewを参照)。- 出力データ
-
型 名前 説明 referenceTypeID refType クラス。 methodID methodID メソッド。 - 応答データ
-
型 名前 説明 int bytes bytes回の繰り返し: bytebytecode Javaバイト・コード。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 INVALID_METHODID methodIDがメソッドのIDではない。 NOT_IMPLEMENTED ターゲット仮想マシンがバイト・コードの取得をサポートしていない。 VM_DEAD 仮想マシンが動作していない。
IsObsoleteコマンド(4)
メソッドがもう使用されていないものかどうかを判別します。 RedefineClassesコマンドを使用してメソッドが同等ではないメソッドで置き換えられている場合、メソッドは使用されていません。 双方のメソッドのバイト・コードが同じ場合(定数プールのインデックスを除く)、参照定数が等しい場合は、元のメソッドと再定義したメソッドが同等と見なされます。- 出力データ
-
型 名前 説明 referenceTypeID refType クラス。 methodID methodID メソッド。 - 応答データ
-
型 名前 説明 boolean isObsolete RedefineClassesコマンドによって、このメソッドが同等でないメソッドで置き換えられている場合はtrue。 - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 INVALID_METHODID methodIDがメソッドのIDではない。 NOT_IMPLEMENTED ターゲット仮想マシンがこのクエリーをサポートしていない。 VM_DEAD 仮想マシンが動作していない。
VariableTableWithGenericコマンド(5)
変数のジェネリック・シグニチャを含むメソッドの変数情報を返します。 変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。 インスタンス・メソッドの場合、「this」参照がテーブルに含まれます。 また、合成変数が存在する場合もあります。 汎用シグネチャについては、「Java Virtual Machine仕様」のsignature属性の項を参照してください。 これはJDWPバージョン1.5以降です。- 出力データ
-
型 名前 説明 referenceTypeID refType クラス。 methodID methodID メソッド。 - 応答データ
-
型 名前 説明 int argCnt 引数で使用されるフレーム内のワード数。 8バイトの引数は2ワードを使用し、その他の引数は1ワードを使用する。 int slots 変数の数。 slots回の繰り返し: longcodeIndex 変数が可視状態にある最初のコード・インデックス(符号なし)。 length
と一緒に使う。 この変数は、現在のcodeIndex
<= 現在のフレーム・コード・インデックス<codeIndex + length
stringname 変数の名前。 stringsignature 変数型のJNIシグニチャ。 stringgenericSignature 変数型のジェネリック・シグニチャ、ない場合は空の文字列。 intlength codeIndex
と一緒に使う符号なしの値。 この変数は、現在のcodeIndex
<= 現在のフレーム・コード・インデックス<code index + length
intslot フレーム内の局所変数のインデックス - エラー・データ
値 説明 INVALID_CLASS refTypeが参照型のIDではない。 INVALID_OBJECT refTypeが既知のIDではない。 INVALID_METHODID methodIDがメソッドの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回の繰り返し: fieldIDfieldID 取得するフィールド。 - 応答データ
-
型 名前 説明 int values 返される値の数。「fields」(取得する値の数)と常に等しい。 応答では、フィールドの値はコマンド内の対応するfieldIDと同じ順序で順序付けされる。 values回の繰り返し: valuevalue フィールドの値 - エラー・データ
値 説明 INVALID_OBJECT この参照型はすでにアンロードされ、ガベージ・コレクトされた。 INVALID_FIELDID 無効なフィールド。 VM_DEAD 仮想マシンが動作していない。
SetValuesコマンド(3)
1つ以上のインスタンス・フィールドの値を設定します。 各フィールドは、オブジェクトの型のメンバーか、そのスーパー・クラス、スーパー・インタフェースまたは実装されたインタフェースのいずれかである必要があります。 アクセス制御は実行されません。このため、たとえばprivateフィールドの値を設定できます。 プリミティブ値の場合は、値の型とフィールドの型が正確に一致している必要があります。 オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。- 出力データ
-
型 名前 説明 objectID object オブジェクトID int values 設定するフィールドの数。 values回の繰り返し: fieldIDfieldID 設定するフィールド。 untagged-valuevalue フィールドに入力する値。 - 応答データ
- (なし)
- エラー・データ
値 説明 INVALID_OBJECT この参照型はすでにアンロードされ、ガベージ・コレクトされた。 INVALID_FIELDID 無効なフィールド。 VM_DEAD 仮想マシンが動作していない。
MonitorInfoコマンド(5)
オブジェクトのモニター情報を返します。 VM内のすべてのスレッドが中断されている必要があります。canGetMonitorInfo権限が必要です(CapabilitiesNewを参照)。- 出力データ
-
型 名前 説明 objectID object オブジェクトID - 応答データ
-
型 名前 説明 threadID owner モニターの所有者、またはnull (現在は所有されていない場合)。 int entryCount モニターが入力された回数。 int waiters モニターを待機しているスレッドの数、現在の所有者が存在しない場合は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コマンドによる)、メソッド呼出しは続行されます。
- 出力データ
-
型 名前 説明 objectID object オブジェクトID threadID thread 呼出しを行うスレッド。 classID clazz クラスの型。 methodID methodID 呼び出すメソッド。 int arguments 引数の数。 arguments回の繰り返し: valuearg 引数の値。 int options 呼び出しオプション - 応答データ
-
型 名前 説明 value returnValue 戻り値、またはnull (例外がスローされた場合)。 tagged-objectID exception スローされた例外(存在する場合)。 - エラー・データ
値 説明 INVALID_OBJECT この参照型はすでにアンロードされ、ガベージ・コレクトされた。 INVALID_CLASS clazzが参照型のIDではない。 INVALID_METHODID methodIDは、このオブジェクト型内の静的メソッドの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-objectIDinstance このオブジェクトを参照するオブジェクト。 - エラー・データ
値 説明 INVALID_OBJECT オブジェクトが既知のIDではない。 ILLEGAL_ARGUMENT maxReferrersがゼロより小さい。 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_OBJECT threadが既知の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_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Resumeコマンド (3)
指定されたスレッドの実行を再開します。 以前にこのスレッドがフロント・エンドにより中断されたことがない場合には、このコマンドを呼び出しても効果はありません。 それ以外の場合、このスレッドについて保留中の中断のカウントが減少します。 カウントが0まで減少すると、スレッドは実行を継続します。- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
- (なし)
- エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Statusコマンド (4)
スレッドの現在のステータスを返します。 スレッド・ステータスの応答は、最後に実行されていた時点でのスレッド・ステータスを示します。中断ステータスは、スレッドの中断に関する情報(存在する場合)を提供します。- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
-
型 名前 説明 int threadStatus スレッド・ステータス・コードの1つ。JDWP.ThreadStatus を参照 int suspendStatus 中断ステータス・コードの1つ。JDWP.SuspendStatus を参照 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
ThreadGroupコマンド(5)
指定されたスレッドを含むスレッド・グループを返します。- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
-
型 名前 説明 threadGroupID group このスレッドのスレッド・グループ。 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Framesコマンド (6)
中断されたスレッドの現在の呼出しスタックを返します。 フレーム・シーケンスは、現在実行中のフレームから始まり、次にその呼出し元のフレーム、と続きます。 スレッドは中断されていなければならず、返されるframeIDは、スレッドが中断されている間だけ有効です。- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 int startFrame 取得する最初のフレームのインデックス。 int length 取得するフレームのカウント(-1は「残りすべて」の意味)。 - 応答データ
-
型 名前 説明 int frames 取得されたフレーム数 frames回の繰り返し: frameIDframeID このフレームのID。 locationlocation このフレームの現在位置 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
FrameCountコマンド(7)
このスレッド・スタックのフレーム・カウントを返します。 スレッドは中断されていなければならず、返されるカウントはスレッドが中断されている間だけ有効です。 スレッドが中断されていない場合は、JDWP.Error.errorThreadNotSuspendedを返します。- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
-
型 名前 説明 int frameCount このスレッド・スタックのフレーム・カウント。 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
OwnedMonitorsコマンド(8)
オブジェクトのモニターがこのスレッドから入った、というオブジェクトを返します。 スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。 canGetOwnedMonitorInfo権限が必要です(CapabilitiesNewを参照)。- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
-
型 名前 説明 int owned 所有するモニターの数 owned回の繰り返し: tagged-objectIDmonitor 所有するモニター - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知の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_OBJECT threadが既知の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_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
SuspendCountコマンド(12)
このスレッドの中断カウントを取得します。 中断カウントは、スレッド・レベルまたはVMレベルの中断コマンドによりスレッドが中断された回数(対応する再開コマンドが実行されたものは除く)です- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
-
型 名前 説明 int suspendCount このスレッドの未処理の中断の回数。 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
OwnedMonitorsStackDepthInfoコマンド(13)
スレッドが所有するモニター・オブジェクト、およびモニターが取得されたスタック深度を返します。 実装がスタック深度を判別できない場合(JNI MonitorEnterにより取得されたモニターなど)は、スタック深度-1が返されます。スレッドは中断されている必要があります。返される情報が有効なのは、スレッドが中断されている場合のみです。 canGetMonitorFrameInfo権限が必要です(CapabilitiesNewを参照)。これはJDWPバージョン1.6以降。
- 出力データ
-
型 名前 説明 threadID thread スレッドのオブジェクトID。 - 応答データ
-
型 名前 説明 int owned 所有するモニターの数 owned回の繰り返し: tagged-objectIDmonitor 所有するモニター intstack_depth モニターが取得されたスタック深度の位置 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT threadが既知のIDではない。 NOT_IMPLEMENTED この機能はこの仮想マシンに実装されていない。 VM_DEAD 仮想マシンが動作していない。
ForceEarlyReturnコマンド(14)
return文に到達する前に強制的にメソッドを復帰させます。早期復帰するメソッドを「被呼出しメソッド」と呼びます。 呼び出されたメソッドは、このコマンドの受信時に指定されたスレッドの現在のメソッド(「Java Virtual Machine仕様」のフレーム・セクションで定義されているとおり)です。
指定されるスレッドは、中断されている必要があります。 メソッドの復帰は、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_OBJECT groupが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Parentコマンド (2)
指定されたスレッド・グループを含むスレッド・グループ(存在する場合)を返します。- 出力データ
-
型 名前 説明 threadGroupID group スレッド・グループのオブジェクトID。 - 応答データ
-
型 名前 説明 threadGroupID parentGroup 親スレッド・グループ・オブジェクト、またはnull (指定されたスレッド・グループがトップ・レベルのスレッド・グループの場合) - エラー・データ
値 説明 INVALID_THREAD_GROUP スレッド・グループが無効。 INVALID_OBJECT groupが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
Childrenコマンド (3)
このスレッド・グループに直接含まれるライブ・スレッドおよびアクティブなスレッド・グループを返します。 子スレッド・グループ内のスレッドおよびスレッド・グループは、返されません。 スレッドは開始されると、停止されるまで、活動状態にあります。 アクティブなThreadGroupについては、java.lang.ThreadGroupを参照してください。- 出力データ
-
型 名前 説明 threadGroupID group スレッド・グループのオブジェクトID。 - 応答データ
-
型 名前 説明 int childThreads 子スレッドの数。 childThreads回の繰り返し: threadIDchildThread 直接の子スレッドID。 int childGroups 子スレッド・グループの数。 childGroups回の繰り返し: threadGroupIDchildGroup 直接の子スレッド・グループのID。 - エラー・データ
値 説明 INVALID_THREAD_GROUP スレッド・グループが無効。 INVALID_OBJECT groupが既知のIDではない。 VM_DEAD 仮想マシンが動作していない。
ArrayReferenceコマンド・セット(13)
Lengthコマンド (1)
指定された配列内のコンポーネントの数を返します。- 出力データ
-
型 名前 説明 arrayID arrayObject 配列のオブジェクトID。 - 応答データ
-
型 名前 説明 int arrayLength 配列の長さ。 - エラー・データ
値 説明 INVALID_OBJECT arrayObjectが既知のIDではない。 INVALID_ARRAY 配列が無効。 VM_DEAD 仮想マシンが動作していない。
GetValuesコマンド(2)
配列コンポーネントの範囲を返します。 指定された範囲は、配列の境界内にある必要があります。- 出力データ
-
型 名前 説明 arrayID arrayObject 配列のオブジェクトID。 int firstIndex 取得する最初のインデックス。 int length 取得するコンポーネントの数。 - 応答データ
-
型 名前 説明 arrayregion values 取得した値。 値がオブジェクトの場合は、タグ付けされた値になる。それ以外の場合は、タグ付けされていない値になる - エラー・データ
値 説明 INVALID_LENGTH インデックスがこの配列の最後を越えている場合。 INVALID_OBJECT arrayObjectが既知のIDではない。 INVALID_ARRAY 配列が無効。 VM_DEAD 仮想マシンが動作していない。
SetValuesコマンド(3)
配列コンポーネントの範囲を設定します。 指定された範囲は、配列の境界内にある必要があります。 プリミティブ値の場合、各値の型と配列コンポーネントの型は正確に一致している必要があります。 オブジェクト値の場合、値型から配列コンポーネント型への広範な参照変換が存在し、かつ配列コンポーネント型がロードされている必要があります。- 出力データ
-
型 名前 説明 arrayID arrayObject 配列のオブジェクトID。 int firstIndex 設定する最初のインデックス。 int values 設定する値の数。 values回の繰り返し: untagged-valuevalue 設定する値。 - 応答データ
- (なし)
- エラー・データ
値 説明 INVALID_LENGTH インデックスがこの配列の最後を越えている場合。 INVALID_OBJECT arrayObjectが既知のIDではない。 INVALID_ARRAY 配列が無効。 VM_DEAD 仮想マシンが動作していない。
ClassLoaderReferenceコマンド・セット(14)
VisibleClassesコマンド(1)
このクラス・ローダーがClassLoader::loadClass
、Class::forName
およびバイトコード・リンケージを介して名前で検索できるすべてのクラスのリストを返します。 つまり、このクラス・ローダーが「開始」ローダーとして記録されているすべてのクラスです。 このリストには、このローダーによって作成された各参照型と、このクラス・ローダーによって別のクラス・ローダーにロードが委譲された型が含まれます。 可視クラス・リストには、型の名前空間に関して、便利な特性があります。 特定の型の名前は、リスト中に最高1回しか出現しません。 このクラス・ローダーにより定義されたクラスの型名を使って宣言されたフィールドまたは変数はそれぞれ、その単一の型に解決される必要があります。
返されるリストの順番は保証されていません。
JVM TI GetClassLoaderClassesを参照してください。
- 出力データ
-
型 名前 説明 classLoaderID classLoaderObject クラス・ローダーのオブジェクトID。 - 応答データ
-
型 名前 説明 int classes 可視クラスの数。 classes回の繰り返し: byterefTypeTag あとに続く参照型の種類。 referenceTypeIDtypeID このクラス・ローダーに対する可視クラス。 - エラー・データ
値 説明 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回の繰り返し: 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.*」)に限定される。 - 応答データ
-
型 名前 説明 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回の繰り返し: intslot フレーム内の局所変数のインデックス。 bytesigbyte 変数の型を識別するタグ - 応答データ
-
型 名前 説明 int values 取得された値の数。slotsの取得する値の数と常に等しい。 values回の繰り返し: valueslotValue 局所変数の値。 - エラー・データ
値 説明 INVALID_THREAD 渡されたスレッドがnull、有効でないスレッド、または終了している。 INVALID_OBJECT この参照型はすでにアンロードされ、ガベージ・コレクトされた。 INVALID_FRAMEID 無効なjframeID。 INVALID_SLOT 無効なスロット。 VM_DEAD 仮想マシンが動作していない。
SetValuesコマンド(2)
1つまたは複数の局所変数の値を設定します。 各変数は、現在のフレーム・コード・インデックスで可視である必要があります。 プリミティブ値の場合、値の型と変数の型は正確に一致している必要があります。 オブジェクト値の場合、値の型から変数の型への広範な参照変換が存在し、かつ変数の型がロードされている必要があります。局所変数の情報を利用できなくても、フロント・エンドが正しい局所変数インデックスを判別できる場合は、値の設定が可能です。 (一般に、局所変数テーブルの情報にアクセスしなくても、メソッド・シグネチャからメソッド引数についてこのインデックスを判別できます。)
- 出力データ
-
型 名前 説明 threadID thread フレームのスレッド。 frameID frame フレームID。 int slotValues 設定する値の数。 slotValues回の繰り返し: intslot スロットID。 valueslotValue 設定する値。 - 応答データ
- (なし)
- エラー・データ
値 説明 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_OBJECT threadが既知の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つだけであっても、イベントの配信には常に複合イベントが使用されます。複合イベントとしてグループ化されるイベントには、次の方法で制限が課されます。
- 同一スレッドに対するほかのスレッド開始イベントとのみ一緒にされる:
- スレッド開始イベント
- 同一スレッドに対するほかのスレッド終了イベントとのみ一緒にされる:
- スレッド終了イベント
- 同一クラスに対するほかのクラス準備イベントとのみ一緒にされる:
- クラス準備イベント
- 同一クラスに対するほかのクラス・アンロード・イベントとのみ一緒にされる:
- クラス・アンロード・イベント
- 同一フィールド・アクセスに対するアクセス・ウォッチポイント・イベントとのみ一緒にされる:
- アクセス・ウォッチポイント・イベント
- 同一フィールド変更に対するほかの変更ウォッチポイント・イベントとのみ一緒にされる:
- 変更ウォッチポイント・イベント
- 同一モニター・オブジェクトのMonitor contended enterイベントとのみ一緒にされる:
- Monitor Contended Enterイベント
- 同一モニター・オブジェクトのMonitor contended enteredイベントとのみ一緒にされる:
- Monitor Contended Enteredイベント
- 同一モニター・オブジェクトのモニター待機イベントとのみ一緒にされる:
- モニター待機イベント
- 同一モニター・オブジェクトのモニター待機終了イベントとのみ一緒にされる:
- モニター待機終了イベント
- 同一の例外発生に対するほかの例外イベントとのみ一緒にされる:
- ExceptionEvent
- 同一位置および同一スレッド内の、このグループのほかのメンバーとのみ一緒にされる:
- ブレークポイント・イベント
- ステップ・イベント
- メソッド・エントリ・イベント
- メソッド終了イベント
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回の繰り返し: 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定数
名前 | 値 | 説明 |
---|---|---|
NONE | 0 | エラーは発生しなかった。 |
INVALID_THREAD | 10 | 渡されたスレッドがnull、有効でないスレッド、または終了している。 |
INVALID_THREAD_GROUP | 11 | スレッド・グループが無効。 |
INVALID_PRIORITY | 12 | 無効な優先順位。 |
THREAD_NOT_SUSPENDED | 13 | 指定されたスレッドは、イベントによって中断されていない。 |
THREAD_SUSPENDED | 14 | スレッドはすでに中断されている。 |
THREAD_NOT_ALIVE | 15 | スレッドが開始されていないか、すでに終了している。 |
INVALID_OBJECT | 20 | この参照型はすでにアンロードされ、ガベージ・コレクトされた。 |
INVALID_CLASS | 21 | 無効なクラス。 |
CLASS_NOT_PREPARED | 22 | クラスがロードされているが、まだ準備されていない。 |
INVALID_METHODID | 23 | 無効なメソッド。 |
INVALID_LOCATION | 24 | 無効な位置。 |
INVALID_FIELDID | 25 | 無効なフィールド。 |
INVALID_FRAMEID | 30 | 無効なjframeID。 |
NO_MORE_FRAMES | 31 | 呼出しスタックにJavaまたはJNIフレームはもうない。 |
OPAQUE_FRAME | 32 | フレームに関する情報が入手できない。 |
NOT_CURRENT_FRAME | 33 | 操作は現在のフレームでしか実行できない。 |
TYPE_MISMATCH | 34 | 使用した関数と変数の型が合わない。 |
INVALID_SLOT | 35 | 無効なスロット。 |
DUPLICATE | 40 | すでに設定された項目。 |
NOT_FOUND | 41 | 目的の要素が見つからない。 |
INVALID_MODULE | 42 | モジュールが無効です。 |
INVALID_MONITOR | 50 | 無効なモニター。 |
NOT_MONITOR_OWNER | 51 | このスレッドはモニターを所有していない。 |
INTERRUPT | 52 | 呼出しの完了前に割り込まれた。 |
INVALID_CLASS_FORMAT | 60 | 仮想マシンがクラス・ファイルを読み込もうとしたが、ファイルの形式が間違っているか、その他の理由でクラス・ファイルとして解釈できない。 |
CIRCULAR_CLASS_DEFINITION | 61 | クラスの初期化中に、循環定義が検出された。 |
FAILS_VERIFICATION | 62 | クラス・ファイルの形式は正しいが、検証ルーチンは何らかの種類の内部的な不整合かセキュリティ上の問題を検出した。 |
ADD_METHOD_NOT_IMPLEMENTED | 63 | 追加メソッドが実装されていない。 |
SCHEMA_CHANGE_NOT_IMPLEMENTED | 64 | スキーマの変更が実装されていない。 |
INVALID_TYPESTATE | 65 | スレッドの状態が変更されたため、不整合が生じている。 |
HIERARCHY_CHANGE_NOT_IMPLEMENTED | 66 | 新しいクラスのバージョンの直接スーパー・クラスが異なる、または直接実装されているインタフェースが異なり、canUnrestrictedlyRedefineClassesがfalse。 |
DELETE_METHOD_NOT_IMPLEMENTED | 67 | 新しいクラスのバージョンでは、旧クラスのバージョンで宣言したメソッドを宣言せず、またcanUnrestrictedlyRedefineClassesがfalse。 |
UNSUPPORTED_VERSION | 68 | クラス・ファイルのバージョンがこのVMでサポートされていない。 |
NAMES_DONT_MATCH | 69 | 新しいクラス・ファイル内で定義されたクラス名が、旧クラス・オブジェクト内の名前と異なる。 |
CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED | 70 | 新しいクラスのバージョンの修飾子が異なり、canUnrestrictedlyRedefineClassesがfalseになることがあります。 |
METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED | 71 | 新しいクラスのバージョンのメソッドは、修飾子が旧クラスのバージョンの修飾子と異なり、canUnrestrictedlyRedefineClassesがfalseの場合があります。 |
CLASS_ATTRIBUTE_CHANGE_NOT_IMPLEMENTED | 72 | 新しいクラス・バージョンには異なるNestHost、NestMembers、PermittedSubclassesまたはRecordクラス属性があり、canUnrestrictedlyRedefineClassesはfalseです。 |
NOT_IMPLEMENTED | 99 | この機能はこの仮想マシンに実装されていない。 |
NULL_POINTER | 100 | 無効なポインタ。 |
ABSENT_INFORMATION | 101 | 目的の情報を入手できない。 |
INVALID_EVENT_TYPE | 102 | 指定されたイベント・タイプのIDが認識されない。 |
ILLEGAL_ARGUMENT | 103 | 不正な引数。 |
OUT_OF_MEMORY | 110 | 関数でメモリーの割当てが必要になったが、これ以上割り当てられるメモリーがなかった。 |
ACCESS_DENIED | 111 | この仮想マシンではデバッグが有効になっていない。 JVMTIが使用できない。 |
VM_DEAD | 112 | 仮想マシンが動作していない。 |
INTERNAL | 113 | 予期しない内部エラーが発生した。 |
UNATTACHED_THREAD | 115 | この関数の呼出しに使われているスレッドが、仮想マシンに接続されていない。 呼出しは、接続されたスレッドから行う必要がある。 |
INVALID_TAG | 500 | オブジェクト型IDまたはクラス・タグ。 |
ALREADY_INVOKING | 502 | 以前の呼出しが未完了。 |
INVALID_INDEX | 503 | インデックスが無効。 |
INVALID_LENGTH | 504 | 長さが無効。 |
INVALID_STRING | 506 | 文字列が無効。 |
INVALID_CLASS_LOADER | 507 | クラス・ローダーが無効。 |
INVALID_ARRAY | 508 | 配列が無効。 |
TRANSPORT_LOAD | 509 | トランスポートをロードできない。 |
TRANSPORT_INIT | 510 | トランスポートを初期化できない。 |
NATIVE_METHOD | 511 | |
INVALID_COUNT | 512 | カウントが無効。 |
EventKind定数
名前 | 値 | 説明 |
---|---|---|
SINGLE_STEP | 1 | |
BREAKPOINT | 2 | |
FRAME_POP | 3 | |
EXCEPTION | 4 | |
USER_DEFINED | 5 | |
THREAD_START | 6 | |
THREAD_DEATH | 7 | |
THREAD_END | 7 | 廃止 - jvmdiで使用されていました |
CLASS_PREPARE | 8 | |
CLASS_UNLOAD | 9 | |
CLASS_LOAD | 10 | |
FIELD_ACCESS | 20 | |
FIELD_MODIFICATION | 21 | |
EXCEPTION_CATCH | 30 | |
METHOD_ENTRY | 40 | |
METHOD_EXIT | 41 | |
METHOD_EXIT_WITH_RETURN_VALUE | 42 | |
MONITOR_CONTENDED_ENTER | 43 | |
MONITOR_CONTENDED_ENTERED | 44 | |
MONITOR_WAIT | 45 | |
MONITOR_WAITED | 46 | |
VM_START | 90 | |
VM_INIT | 90 | 廃止 - jvmdiで使用されていました |
VM_DEATH | 99 | |
VM_DISCONNECTED | 100 | JDWPを越えて送信されることはありません |
ThreadStatus定数
名前 | 値 | 説明 |
---|---|---|
ZOMBIE | 0 | |
RUNNING | 1 | |
SLEEPING | 2 | |
MONITOR | 3 | |
WAIT | 4 |
SuspendStatus定数
名前 | 値 | 説明 |
---|---|---|
SUSPEND_STATUS_SUSPENDED | 0x1 |
ClassStatus定数
名前 | 値 | 説明 |
---|---|---|
VERIFIED | 1 | |
PREPARED | 2 | |
INITIALIZED | 4 | |
ERROR | 8 |
TypeTag定数
名前 | 値 | 説明 |
---|---|---|
CLASS | 1 | 参照型はクラス。 |
INTERFACE | 2 | 参照型はインタフェース。 |
ARRAY | 3 | 参照型は配列。 |
Tag定数
名前 | 値 | 説明 |
---|---|---|
ARRAY | 91 | '[' - 配列オブジェクト(objectIDサイズ)。 |
BYTE | 66 | 'B' - バイト値(1バイト)。 |
CHAR | 67 | 'C' - 文字値(2バイト)。 |
OBJECT | 76 | 'L' - オブジェクト(objectIDサイズ)。 |
FLOAT | 70 | 'F' - 浮動小数点値(4バイト)。 |
DOUBLE | 68 | 'D' - 倍精度値(8バイト)。 |
INT | 73 | 'I' - 整数値(4バイト)。 |
LONG | 74 | 'J' - 長整数値(8バイト)。 |
SHORT | 83 | 'S' - 短整数値(2バイト)。 |
VOID | 86 | 'V' - void値(バイトなし)。 |
BOOLEAN | 90 | 'Z' - ブール値(1バイト)。 |
STRING | 115 | 's' - Stringオブジェクト(objectIDサイズ)。 |
THREAD | 116 | 't' - Threadオブジェクト(objectIDサイズ)。 |
THREAD_GROUP | 103 | 'g' - ThreadGroupオブジェクト(objectIDサイズ)。 |
CLASS_LOADER | 108 | 'l' - ClassLoaderオブジェクト(objectIDサイズ)。 |
CLASS_OBJECT | 99 | 'c' - クラス・オブジェクト(objectIDサイズ)。 |
StepDepth定数
名前 | 値 | 説明 |
---|---|---|
INTO | 0 | ステップの終了前に、メソッド呼出しがあれば、その中に入る。 |
OVER | 1 | ステップの終了前に、メソッド呼出しがあれば、そのメソッドをすべて実行する。 |
OUT | 2 | 現在のメソッドからステップ・アウトする。 |
StepSize定数
名前 | 値 | 説明 |
---|---|---|
MIN | 0 | 可能な最小の量(多くの場合、バイト・コード命令)だけステップ実行する。 |
LINE | 1 | 次のソース行までステップ実行する。行番号情報が存在しない場合は、MINステップが実行される。 |
SuspendPolicy定数
名前 | 値 | 説明 |
---|---|---|
NONE | 0 | このイベントの遭遇時にスレッドを中断しない。 |
EVENT_THREAD | 1 | このイベントの遭遇時にイベント・スレッドを中断する。 |
ALL | 2 | このイベントの遭遇時にすべてのスレッドを中断する。 |
InvokeOptions定数
呼出しオプションは、次のビット・フラグのうち、0個以上のビットを組み合わせたもの名前 | 値 | 説明 |
---|---|---|
INVOKE_SINGLE_THREADED | 0x01 | それ以外の場合、開始したすべてのスレッド。 |
INVOKE_NONVIRTUAL | 0x02 | それ以外の場合、通常の仮想呼び出し(インスタンス・メソッドのみ) |