InvokeOptions 定数
ターゲットの VM により実装された JDWP のバージョンを返します。バージョン文字列の書式は、実装に依存します。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
string | description | VM のバージョンに関するテキスト情報
|
int | jdwpMajor | JDWP のメジャーバージョン番号
|
int | jdwpMinor | JDWP のマイナーバージョン番号
|
string | vmVersion | ターゲット VM の JRE バージョン (java.version プロパティの値と同じ)
|
string | vmName | ターゲット VM 名 (java.vm.name プロパティの値と同じ)
|
- エラーデータ
-
ターゲット VM によりロードされたクラスのうち、指定されたシグニチャーと一致するものすべての参照型を返します。複数のクラスローダが同名のクラスをロードしている場合、複数の参照型が返されます。検索は、ロードされたクラスだけに限定されます。指定されたシグニチャーを持つクラスのロードは行われません。
- 出力データ
| | | | | |
|
string | signature | 検索するクラスの JNI シグニチャー (たとえば、「Ljava/lang/String;」)
|
- 応答データ
| | | | | |
|
int | classes | 全参照型の数
|
classes 回の繰り返し:
|
|
byte | refTypeTag | あとに続く参照型の種類
|
|
referenceTypeID | typeID | 対応するロードされた参照型
|
|
int | status | 現在のクラスのステータス
|
- エラーデータ
-
ターゲット VM によって現在ロードされているすべてのクラスの参照型を返します。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
int | classes | 全参照型の数
|
classes 回の繰り返し:
|
|
byte | refTypeTag | あとに続く参照型の種類
|
|
referenceTypeID | typeID | ロードされた参照型
|
|
string | signature | ロードされた参照型の JNI シグニチャー
|
|
int | status | 現在のクラスのステータス
|
- エラーデータ
-
ターゲット VM で実行中のすべてのスレッドを返します。返されるリストには、java.lang.Thread で作成されたスレッド、JNI を介してターゲット VM に接続されたすべてのネイティブスレッド、およびターゲット VM により作成されたシステムスレッドが含まれます。開始されていないスレッド、および実行の完了したスレッドは、リストに含まれません。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
int | threads | このあとに続くスレッドの数
|
threads 回の繰り返し:
|
|
threadID | thread | 実行中のスレッド
|
- エラーデータ
-
親を持たないスレッドグループをすべて返します。このコマンドは、既存のスレッドグループの (1 つまたは複数の) ツリーを構築する最初の手順として使用できます。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
int | groups | このあとに続くスレッドグループの数
|
groups 回の繰り返し:
|
|
threadGroupID | group | トップレベルのスレッドグループ
|
- エラーデータ
-
この仮想マシンのミラーを無効にします。ターゲット VM への通信チャネルが閉じられ、ターゲット VM は、このデバッガまたは別のデバッガからの次の接続を受け付ける準備をします。それには、次のような作業が含まれます。- すべてのイベント要求が取り消される
- スレッドレベルの Resume コマンドまたは VM レベルの Resume コマンドにより中断されたすべてのスレッドが、実行に必要な回数だけ再開される
- ガベージコレクションが無効にされたすべての状況で、再度有効にされる
ターゲット VM で実行中のすべてのメソッド呼び出しは、切断後も継続されます。そのようなメソッド呼び出しが完了すると、呼び出し元のスレッドは、もともと停止した場所から実行を継続します。この仮想マシンを起源とするリソース (オブジェクト参照や参照型など) は、無効になります。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラーデータ
- (なし)
ターゲット VM 内に存在する可変サイズのデータ型のサイズを返します。返される値は、コマンドパケットおよび応答パケット内でその識別子が使用しているバイト数を示します。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
int | fieldIDSize | fieldID のサイズ (バイト単位)
|
int | methodIDSize | methodID のサイズ (バイト単位)
|
int | objectIDSize | objectID のサイズ (バイト単位)
|
int | referenceTypeIDSize | referenceTypeID のサイズ (バイト単位)
|
int | frameIDSize | frameID のサイズ (バイト単位)
|
- エラーデータ
-
ターゲット VM で稼動中のアプリケーションの実行を中断します。現在実行中の Java スレッドは、すべて中断されます。java.lang.Thread.suspend とは異なり、仮想マシンと個々のスレッド両方の中断がカウントされます。スレッドを再び実行する前に、VM レベルの Resume コマンドまたはスレッドレベルの Resume コマンドを使って、中断の実行回数と同じ数だけ再開を実行する必要があります。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラーデータ
-
Suspend コマンドの実行後、またはイベントによるアプリケーションの停止後に、アプリケーションの実行を再開します。仮想マシンおよび個々のスレッドの中断がカウントされます。特定のスレッドの中断回数が n 回の場合、そのスレッドを続行する前に n 回再開する必要があります。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラーデータ
- (なし)
指定された終了コードでターゲット VM を終了させます。プラットフォームによっては、終了コードが下位 8 ビットなどに切り捨てられる場合があります。以前にターゲット VM から返された ID は、すべて無効になります。VM で実行中のスレッドは、そのまま突然に停止させられます。スレッド終了例外はスローされないため、finally ブロックは実行されません。
- 出力データ
-
- 応答データ
- (なし)
- エラーデータ
- (なし)
ターゲット VM 内に文字列オブジェクトを新規作成し、その ID を返します。
- 出力データ
| | | | | |
|
string | utf | 作成された文字列内で使用する UTF-8 形式の文字
|
- 応答データ
| | | | | |
|
stringID | stringObject | 作成された文字列 (java.lang.String のインスタンス)
|
- エラーデータ
-
この 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 の classpath および bootclasspath を取得します。classpath が定義されていない場合は、空のリストを返します。bootclasspath が定義されていない場合は、空のリストを返します。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
string | baseDir | 次のリスト内のいずれかの相対パス解決で使用されるベースディレクトリ
|
int | classpaths | classpath 内のパスの数
|
classpaths 回の繰り返し:
|
|
string | path | classpath の 1 コンポーネント
|
int | bootclasspaths | bootclasspath 内のパスの数
|
bootclasspaths 回の繰り返し:
|
|
string | path | bootclasspath の 1 コンポーネント
|
- エラーデータ
-
オブジェクト ID のリストを解放します。リスト内の各オブジェクトに対して、以下の処理が適用されます。バックエンドによって保持されている参照の回数 (参照カウント) が、refCnt によって減らされます。その後、参照カウントが 0 以下であれば、その ID は解放されます。解放された ID に関連付けられたバックエンドリソースがあれば、そのリソースも解放され、オブジェクトのガベージコレクションが無効にされていれば、再度有効にされます。このコマンドを送った側は、解放された ID を参照するコマンドをそれ以降は送らないようにしなければなりません。このコマンドの使用は、必須ではありません。このコマンドが送られない場合、各 ID に関連付けられたリソースは、対応するオブジェクトのガベージコレクションの実行後に、バックエンドにより解放されます。このコマンドのもっとも効果的な利用法は、大量のオブジェクト (大規模な配列など) がバックエンドから取得されているが、すぐにはガベージコレクションが行われない場合に、バックエンドの負荷を軽減することです。
このコマンドで解放された ID は、バックエンドにより再利用されることがあります。この説明では、参照がカウントされていることを想定しており、バックエンドは同等の動作をする任意の実装を使用できます。
- 出力データ
| | | | | |
|
int | requests | このあとに続くオブジェクト破棄要求の数
|
requests 回の繰り返し:
|
|
objectID | object | オブジェクト ID
|
|
int | refCnt | このオブジェクト ID がバックエンドから受け取ったパケットに含まれていた回数。ここに正確なカウントを指定することにより、オブジェクト ID が着信パケットの一部であり、まだフロントエンドにより処理されていない場合に、オブジェクト ID がバックエンドで解放されることを回避できる
|
- 応答データ
- (なし)
- エラーデータ
- (なし)
ターゲット VM に対し、イベントの送信を停止するよう伝えます。イベントは破棄されるのではなく、次に ReleaseEvents コマンドが送信されるまで保持されます。大量のイベントが生成される状況で、デバッガ VM に送信されるイベントの数を制御する場合に、このコマンドは有用です。イベントはデバッガバックエンドにより保持されます。 アプリケーションの実行は、バッファがオーバーフローしないよう、デバッガバックエンドにより凍結されます。コマンドへの応答は保持されないため、このコマンドによる影響はありません。イベントがすでに保持されている場合、このコマンドは無視されます。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラーデータ
- (なし)
ターゲット VM に対し、イベントの送信を継続するよう伝えます。このコマンドは、HoldEvents コマンドの実行後に通常のアクティビティを復元する際に使用されます。現在有効な HoldEvents コマンドが存在しない場合、このコマンドは無視されます。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラーデータ
- (なし)
この 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 | reserved16 | 将来の機能のために予約済み
|
boolean | reserved17 | 将来の機能のために予約済み
|
boolean | reserved18 | 将来の機能のために予約済み
|
boolean | reserved19 | 将来の機能のために予約済み
|
boolean | reserved20 | 将来の機能のために予約済み
|
boolean | reserved21 | 将来の機能のために予約済み
|
boolean | reserved22 | 将来の機能のために予約済み
|
boolean | reserved23 | 将来の機能のために予約済み
|
boolean | reserved24 | 将来の機能のために予約済み
|
boolean | reserved25 | 将来の機能のために予約済み
|
boolean | reserved26 | 将来の機能のために予約済み
|
boolean | reserved27 | 将来の機能のために予約済み
|
boolean | reserved28 | 将来の機能のために予約済み
|
boolean | reserved29 | 将来の機能のために予約済み
|
boolean | reserved30 | 将来の機能のために予約済み
|
boolean | reserved31 | 将来の機能のために予約済み
|
boolean | reserved32 | 将来の機能のために予約済み
|
- エラーデータ
-
新しいクラス定義をインストールします。ターゲット VM で再定義されたクラスのメソッドにアクティブなスタックフレームがあると、そのアクティブフレームは元のメソッドのバイトコードの実行を続行します。これらのメソッドは、使用されていないものと見なされます (IsObsolete を参照)。再定義されたクラスのメソッドは、ターゲット VM の新しい呼び出しに使用されます。元のメソッド ID は再定義されたメソッドを参照します。再定義されたクラスのすべてのブレークポイントが解除されます。スタックフレームをリセットする場合は、PopFrames コマンドを使用して、使用されていないメソッドとともにフレームをポップすることができます。canRedefineClasses 機能が必要です (CapabilitiesNew を参照)。canRedefineClasses 機能に加え、ターゲット VM には、クラスを再定義するときにメソッドを追加する canAddMethod 機能、または任意の方法でクラスを再定義する canUnrestrictedlyRedefineClasses が必要です。
- 出力データ
| | | | | |
|
int | classes | 全参照型の数
|
classes 回の繰り返し:
|
|
referenceTypeID | refType | 参照型
|
|
int | classfile | 定義するクラスのバイト数
|
|
classfile 回の繰り返し:
|
|
byte | classbyte | JVM クラスファイル形式のバイト
|
- 応答データ
- (なし)
- エラーデータ
-
デフォルトのストラタを設定します。canSetDefaultStratum 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
| | | | | |
|
string | stratumID | デフォルトストラタ、または参照型デフォルトを使用するための空の文字列
|
- 応答データ
- (なし)
- エラーデータ
-
ターゲット VM によって現在ロードされているすべてのクラスの参照型を返します。各クラスに対して JNI シグニチャーと汎用シグニチャーの両方が返されます。汎用シグニチャーについては、「Java Virtual Machine Specification, 3rd Edition」のシグニチャー属性の節を参照してください。これは JDWP バージョン 1.5 以降です。
- 出力データ
- (なし)
- 応答データ
| | | | | |
|
int | classes | 全参照型の数
|
classes 回の繰り返し:
|
|
byte | refTypeTag | あとに続く参照型の種類
|
|
referenceTypeID | typeID | ロードされた参照型
|
|
string | signature | ロードされた参照型の JNI シグニチャー
|
|
string | genericSignature | ロードされた参照型の汎用シグニチャー、ない場合は空の文字列
|
|
int | status | 現在のクラスのステータス
|
- エラーデータ
-
参照型の JNI シグニチャーを返します。JNI シグニチャーの形式については、Java Native Inteface 仕様を参照してください。プリミティブクラスの場合、返されるシグニチャーは対応するプリミティブ型のシグニチャーです。たとえば、「I」は、java.lang.Integer.TYPE により表されるクラスのシグニチャーとして返されます。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
string | signature | 参照型の JNI シグニチャー
|
- エラーデータ
-
指定された参照型をロードした java.lang.ClassLoader のインスタンスを返します。その参照型がシステムクラスローダによりロードされた場合、返されるオブジェクト ID は null になります。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
classLoaderID | classLoader | 参照型のクラスローダ
|
- エラーデータ
-
参照型の修飾子 (アクセスフラグともいう) を返します。返されるビットマスクには、参照型の宣言に関する情報が含まれます。参照型が配列またはプリミティブクラス (たとえば、java.lang.Integer.TYPE) である場合、返されるビットマスクの値は定義されません。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | modBits | VM 仕様で定義された修飾子ビット
|
- エラーデータ
-
参照型の各フィールドに関する情報を返します。継承したフィールドは含まれません。フィールドリストには、コンパイラにより作成されたすべての合成フィールドが含まれます。フィールドは、クラスファイル内に出現する順序で返されます。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | declared | 宣言されたフィールドの数
|
declared 回の繰り返し:
|
|
fieldID | fieldID | フィールド ID
|
|
string | name | フィールドの名前
|
|
string | signature | フィールドの JNI シグニチャー
|
|
int | modBits | フィールド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、VM 仕様で定義されている。また、合成属性の機能を利用可能な場合には、0xf0000000 ビットは、そのフィールドが合成フィールドであることを示す
|
- エラーデータ
-
参照型の各メソッドに関する情報を返します。継承したメソッドは含まれません。メソッドのリストには、コンストラクタ (名前「<init>」で識別される)、存在する場合には初期化メソッド (名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。メソッドは、クラスファイル内に出現する順序で返されます。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | declared | 宣言されたメソッドの数
|
declared 回の繰り返し:
|
|
methodID | methodID | メソッド ID
|
|
string | name | メソッドの名前
|
|
string | signature | メソッドの JNI シグニチャー
|
|
int | modBits | メソッド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、VM 仕様で定義されている。また、合成属性の機能を利用可能な場合には、0xf0000000 ビットは、メソッドが合成メソッドであることを示す
|
- エラーデータ
-
参照型の 1 つまたは複数の static フィールドの値を返します。各フィールドは、参照型のメンバか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を取得できます。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
int | fields | 取得する値の数
|
fields 回の繰り返し:
|
|
fieldID | fieldID | 取得するフィールド
|
- 応答データ
| | | | | |
|
int | values | 返される値の数。fields の取得する値の数と常に等しい
|
values 回の繰り返し:
|
|
value | value | フィールド値
|
- エラーデータ
-
参照型が宣言されたソースファイルの名前を返します。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
string | sourceFile | ソースファイルの名前。ファイルのパス情報は含まれない
|
- エラーデータ
-
この型のすぐ内側に入れ子にされたクラスとインタフェースを返します。これらの型のさらに内側に入れ子にされたタイプは含まれません。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | classes | 入れ子にされたクラスとインタフェースの数
|
classes 回の繰り返し:
|
|
byte | refTypeTag | あとに続く参照型の種類
|
|
referenceTypeID | typeID | 入れ子にされたクラスまたはインタフェースの ID
|
- エラーデータ
-
参照型の現在のステータスを返します。VM 仕様で説明されているように、ステータスは参照型の初期化の程度を示します。クラスがリンクしている場合は、返されるステータスビットの PREPARED および VERIFIED ビットが設定されます。クラスが初期化されている場合は、返されるステータスビットの INITIALIZED ビットが設定されます。初期化中にエラーが発生した場合は、返されるステータスビットの ERROR ビットが設定されます。返されるステータスビットは、配列型およびプリミティブクラス (java.lang.Integer.TYPE など) の場合は未定義です。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
-
- エラーデータ
-
このクラスによる実装が宣言されたインタフェースを返します。間接的に実装された (実装済みのインタフェースから継承した、またはスーパークラスが実装した) インタフェースは含まれません。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | インタフェース | 実装したインタフェースの数
|
interfaces 回の繰り返し:
|
|
interfaceID | interfaceType | 実装されたインタフェース
|
- エラーデータ
-
この型に対応するクラスオブジェクトを返します。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
classObjectID | classObject | クラスオブジェクト
|
- エラーデータ
-
SourceDebugExtension 属性の値を返します。これは JDWP バージョン 1.4 以降です。canGetSourceDebugExtension 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
-
- エラーデータ
-
参照型の JNI シグニチャーを返します。存在する場合は汎用シグニチャーも一緒に返します。汎用シグニチャーについては、「Java Virtual Machine Specification, 3rd Edition」のシグニチャー属性の節を参照してください。これは JDWP バージョン 1.5 以降です。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
string | signature | 参照型の JNI シグニチャー
|
string | genericSignature | 参照型の汎用シグニチャー、ない場合は空の文字列
|
- エラーデータ
-
参照型の各フィールドに関する情報 (存在する場合は汎用シグニチャーを含む) を返します。継承したフィールドは含まれません。フィールドリストには、コンパイラにより作成されたすべての合成フィールドが含まれます。フィールドは、クラスファイル内に出現する順序で返されます。汎用シグニチャーについては、「Java Virtual Machine Specification, 3rd Edition」のシグニチャー属性の節を参照してください。これは JDWP バージョン 1.5 以降です。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | declared | 宣言されたフィールドの数
|
declared 回の繰り返し:
|
|
fieldID | fieldID | フィールド ID
|
|
string | name | フィールドの名前
|
|
string | signature | フィールドの JNI シグニチャー
|
|
string | genericSignature | フィールドの汎用シグニチャー、ない場合は空の文字列
|
|
int | modBits | フィールド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、VM 仕様で定義されている。また、合成属性の機能を利用可能な場合には、0xf0000000 ビットは、そのフィールドが合成フィールドであることを示す
|
- エラーデータ
-
参照型の各メソッドに関する情報 (存在する場合は汎用シグニチャーを含む) を返します。継承したメソッドは含まれません。メソッドのリストには、コンストラクタ (名前「<init>」で識別される)、存在する場合には初期化メソッド (名前「<clinit>」で識別される)、およびコンパイラにより作成されたすべての合成メソッドが含まれます。メソッドは、クラスファイル内に出現する順序で返されます。汎用シグニチャーについては、「Java Virtual Machine Specification, 3rd Edition」のシグニチャー属性の節を参照してください。これは JDWP バージョン 1.5 以降です。
- 出力データ
| | | | | |
|
referenceTypeID | refType | 参照型 ID
|
- 応答データ
| | | | | |
|
int | declared | 宣言されたメソッドの数
|
declared 回の繰り返し:
|
|
methodID | methodID | メソッド ID
|
|
string | name | メソッドの名前
|
|
string | signature | メソッドの JNI シグニチャー
|
|
string | genericSignature | メソッドの汎用シグニチャー、ない場合は空の文字列
|
|
int | modBits | メソッド宣言に関する補足情報を提供する修飾子ビットフラグ (アクセスフラグともいう)。個々のフラグ値は、VM 仕様で定義されている。また、合成属性の機能を利用可能な場合には、0xf0000000 ビットは、メソッドが合成メソッドであることを示す
|
- エラーデータ
-
クラスの直属のスーパークラスを返します。
- 出力データ
-
- 応答データ
| | | | | |
|
classID | superclass | スーパークラス (java.lang.Object のクラス ID が指定されている場合は、null)
|
- エラーデータ
-
1 つまたは複数の static フィールドの値を設定します。各フィールドは、クラス型のメンバか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を設定できます。最後のフィールドを設定することはできません。プリミティブ値の場合、値の型とフィールドの型は正確に一致している必要があります。オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。
- 出力データ
| | | | | |
|
classID | clazz | クラス型 ID
|
int | values | 設定するフィールドの数
|
values 回の繰り返し:
|
|
fieldID | fieldID | 設定するフィールド
|
|
untagged-value | value | フィールドに入力する値
|
- 応答データ
- (なし)
- エラーデータ
-
static メソッドを呼び出します。メソッドは、クラス型のメンバか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバでなければなりません。アクセス制御は実行されません。このため、たとえば 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 | スローされた例外
|
- エラーデータ
-
指定されたコンストラクタを呼び出して、この型の新規オブジェクトを作成します。コンストラクタメソッド 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
|
- エラーデータ
-
この型の配列オブジェクトを、指定された長さで新規作成します。
- 出力データ
| | | | | |
|
arrayTypeID | arrType | 新規インスタンスの配列型
|
int | length | 配列の長さ
|
- 応答データ
| | | | | |
|
tagged-objectID | newArray | 新規作成された配列オブジェクト
|
- エラーデータ
-
存在する場合、メソッドの行番号情報を返します。行テーブルは、ソース行番号を、行の初期コードインデックスにマッピングします。行テーブルは、コードインデックスにより (昇順で) 順序付けされます。RedefineClasses を使って新しいクラス定義がインストールされないかぎり、行番号は定数です。
- 出力データ
| | | | | |
|
referenceTypeID | refType | クラス
|
methodID | methodID | メソッド
|
- 応答データ
| | | | | |
|
long | start | メソッドについて有効な最小のコードインデックス。>=0 または -1 (メソッドがネイティブの場合)
|
long | end | メソッドについて有効な最大のコードインデックス。>=0 または -1 (メソッドがネイティブの場合)
|
int | lines | このメソッドの行テーブル内のエントリ数
|
lines 回の繰り返し:
|
|
long | lineCodeIndex | 行の初期コードインデックス (開始 <= lineCodeIndex < 終了)
|
|
int | lineNumber | 行番号
|
- エラーデータ
-
メソッドの変数情報を返します。変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。インスタンスメソッドの場合、「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 | フレーム内の局所変数のインデックス
|
- エラーデータ
-
メソッドのバイトコード (JVM 仕様で定義されている) を取得します。canGetBytecodes 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
| | | | | |
|
referenceTypeID | refType | クラス
|
methodID | methodID | メソッド
|
- 応答データ
| | | | | |
|
int | bytes |
|
bytes 回の繰り返し:
|
|
byte | bytecode | Java バイトコード
|
- エラーデータ
-
メソッドがもう使用されていないものかどうかを判別します。RedefineClasses コマンドを使用してメソッドが同等ではないメソッドで置き換えられている場合、メソッドは使用されていません。双方のメソッドのバイトコードが同じ場合 (定数プールのインデックスを除く)、参照定数が等しい場合は、元のメソッドと再定義したメソッドが同等とみなされます。
- 出力データ
| | | | | |
|
referenceTypeID | refType | クラス
|
methodID | methodID | メソッド
|
- 応答データ
| | | | | |
|
boolean | isObsolete | RedefineClassed コマンドによって、このメソッドが 同等でないメソッドで置き換えれている場合は true
|
- エラーデータ
-
変数の汎用シグニチャーを含むメソッドの変数情報を返します。変数テーブルには、メソッド内で宣言された引数と局所変数が含まれます。インスタンスメソッドの場合、「this」参照がテーブルに含まれます。また、合成変数が存在する場合もあります。汎用シグニチャーについては、「Java Virtual Machine Specification, 3rd Edition」のシグニチャー属性の節を参照してください。これは 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 | フレーム内の局所変数のインデックス
|
- エラーデータ
-
オブジェクトの実行時の型を返します。実行時の型は、クラスまたは配列です。
- 出力データ
-
- 応答データ
| | | | | |
|
byte | refTypeTag | あとに続く参照型の種類
|
referenceTypeID | typeID | 実行時の参照型
|
- エラーデータ
-
1 つまたは複数のインスタンスフィールドの値を返します。各フィールドは、オブジェクトの型のメンバか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を取得できます。
- 出力データ
| | | | | |
|
objectID | object | オブジェクト ID
|
int | fields | 取得する値の数
|
fields 回の繰り返し:
|
|
fieldID | fieldID | 取得するフィールド
|
- 応答データ
| | | | | |
|
int | values | 返される値の数。「fields」の取得する値の数と常に等しい。応答では、フィールドの値はコマンド内の対応する fieldID と同じ順序で順序付けされる
|
values 回の繰り返し:
|
|
value | value | フィールド値
|
- エラーデータ
-
1 つまたは複数のインスタンスフィールドの値を設定します。各フィールドは、オブジェクトの型のメンバか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバでなければなりません。アクセス制御は実行されません。このため、たとえば private フィールドの値を設定できます。プリミティブ値の場合、値の型とフィールドの型は正確に一致している必要があります。オブジェクト値の場合、値の型からフィールドの型への広範な参照変換が存在し、かつフィールドの型がロードされている必要があります。
- 出力データ
| | | | | |
|
objectID | object | オブジェクト ID
|
int | values | 設定するフィールドの数
|
values 回の繰り返し:
|
|
fieldID | fieldID | 設定するフィールド
|
|
untagged-value | value | フィールドに入力する値
|
- 応答データ
- (なし)
- エラーデータ
-
オブジェクトのモニター情報を返します。VM 内のすべてのスレッドが中断されている必要があります。canGetMonitorInfo 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
-
- 応答データ
| | | | | |
|
threadID | owner | モニターの所有者、または null (現在は所有されていない場合)
|
int | entryCount | モニターが入力された回数
|
int | waiters | モニターを待機しているスレッドの数、現在の所有者が存在しない場合は 0
|
waiters 回の繰り返し:
|
|
threadID | thread | このモニターを待機しているスレッド
|
- エラーデータ
-
インスタンスメソッドを呼び出します。メソッドは、オブジェクトの型のメンバか、そのスーパークラス、スーパーインタフェース、または実装されたインタフェースの 1 つのメンバでなければなりません。アクセス制御は実行されません。このため、たとえば 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 | スローされた例外 (存在する場合)
|
- エラーデータ
-
指定されたオブジェクトのガベージコレクションが実行されないようにします。デフォルトでは、バックエンド応答内のすべてのオブジェクトは、ターゲット VM の実行中にいつでもガベージコレクトが可能です。このコマンドを呼び出すと、オブジェクトがガベージコレクトされないことが保証されます。ガベージコレクションを再度有効にするには、EnableCollection コマンドを使用します。ターゲット VM の中断中は、すべてのスレッドが中断しているため、ガベージコレクションは行われません。中断中に変数、フィールド、および配列を調べるという一般的な操作の場合は、明示的にガベージコレクションを無効にしなくても安全です。
このメソッドを使用すると、ターゲット VM 内のガベージコレクションのパターンが変わるため、アプリケーションの動作がデバッガ実行時とデバッガ非実行時とで異なる結果になる可能性があります。そのため、このメソッドの使用には慎重を期してください。
- 出力データ
-
- 応答データ
- (なし)
- エラーデータ
-
このオブジェクトのガベージコレクションを許可します。デフォルトでは、JDWP により返されるすべてのオブジェクトは、ターゲット VM でアクセス不可能になるため、ガベージコレクトが可能です。このコマンドの呼び出しが必要になるのは、DisableCollection コマンドを使ってガベージコレクションを無効にした場合だけです。
- 出力データ
-
- 応答データ
- (なし)
- エラーデータ
-
オブジェクトが、ターゲット VM 内でガベージコレクトされたかどうかを判定します。
- 出力データ
-
- 応答データ
| | | | | |
|
boolean | isCollected | オブジェクトがガベージコレクトされた場合は true、そうでない場合は false
|
- エラーデータ
-
文字列に含まれる文字を返します。
- 出力データ
| | | | | |
|
objectID | stringObject | String オブジェクトの ID
|
- 応答データ
| | | | | |
|
string | stringValue | 文字列の値の UTF-8 表現
|
- エラーデータ
-
スレッド名を返します。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
-
- エラーデータ
-
スレッドを中断します。java.lang.Thread.suspend() とは異なり、仮想マシンと個々のスレッド両方の中断がカウントされます。スレッドを再実行する前に、中断された回数と同じ数の再開が行われなければなりません。
コマンドを使って単一のスレッドを中断することには、java.lang.Thread.suspend() の場合と同様の危険があります。中断されたスレッドが実行中の別のスレッドに必要なモニターを保持している場合、ターゲット VM でデッドロックが発生する可能性があります (少なくとも、中断されたスレッドが再開されるまでの間)。
中断されたスレッドは、前述の JDI 再開メソッドの 1 つを使って再開されるまで中断状態を維持することが保証されます。 ターゲット VM 内のアプリケーションが、中断したスレッドを java.lang.Thread#resume を使って再開することはできません。
これにより、スレッドのステータスが変化することはない点に注意してください (ThreadStatus を参照)。たとえば、このスレッドが実行中だった場合、他のスレッドからは依然として実行中に見えます。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
- (なし)
- エラーデータ
-
指定されたスレッドの実行を再開します。以前にこのスレッドがフロントエンドにより中断されたことがない場合には、このコマンドを呼び出しても効果はありません。それ以外の場合、このスレッドについて保留中の中断のカウントが減少します。カウントが 0 まで減少すると、スレッドは実行を継続します。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
- (なし)
- エラーデータ
-
スレッドの現在のステータスを返します。スレッドステータスの応答は、最後に実行されていた時点でのスレッドステータスを示します。中断ステータスは、スレッドの中断に関する情報 (存在する場合) を提供します。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
-
- エラーデータ
-
指定されたスレッドを含むスレッドグループを返します。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
| | | | | |
|
threadGroupID | group | このスレッドのスレッドグループ
|
- エラーデータ
-
中断されたスレッドの現在の呼び出しスタックを返します。フレームシーケンスは、現在実行中のフレームから始まり、次にその呼び出し元のフレーム、と続きます。スレッドは中断されていなければならず、返される frameID は、スレッドが中断されている間だけ有効です。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
int | startFrame | 取得する最初のフレームのインデックス
|
int | length | 取得するフレームのカウント (-1 は「残りすべて」の意味)
|
- 応答データ
| | | | | |
|
int | frames | 取得されたフレーム数
|
frames 回の繰り返し:
|
|
frameID | frameID | このフレームの ID
|
|
location | location | このフレームの現在位置
|
- エラーデータ
-
このスレッドスタックのフレームカウントを返します。スレッドは中断されていなければならず、返されるカウントはスレッドが中断されている間だけ有効です。スレッドが中断されていない場合は、JDWP.Error.errorThreadNotSuspended を返します。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
| | | | | |
|
int | frameCount | このスレッドスタックのフレームカウント
|
- エラーデータ
-
オブジェクトのモニターがこのスレッドから入った、というオブジェクトを返します。スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。canGetOwnedMonitorInfo 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
| | | | | |
|
int | owned | 所有されるモニターの数
|
owned 回の繰り返し:
|
|
tagged-objectID | monitor | 所有されるモニター
|
- エラーデータ
-
このスレッドが待機中のオブジェクトを返します (存在する場合)。スレッドは、モニターに入るのを待機しているか、java.lang.Object.wait メソッドを使って別のスレッドが notify メソッドを呼び出すのを待機している可能性があります。スレッドは中断されていなければならず、返される情報はスレッドが中断されている間だけ有効です。canGetCurrentContendedMonitor 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
| | | | | |
|
tagged-objectID | monitor | 競合するモニター、または null (競合するモニターが現在は存在しない場合)
|
- エラーデータ
-
非同期の例外をスローしてスレッドを停止します (java.lang.Thread.stop を使用した場合と同様)。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
objectID | throwable | 非同期の例外。このオブジェクトは、java.lang.Throwable のインスタンスまたはサブクラスでなければならない
|
- 応答データ
- (なし)
- エラーデータ
-
スレッドに対し割り込みを実行します (java.lang.Thread.interrupt を実行した場合と同様)。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
- (なし)
- エラーデータ
-
このスレッドの中断カウントを取得します。中断カウントは、スレッドレベルまたは VM レベルの中断コマンドによりスレッドが中断された回数 (対応する再開コマンドが実行されたものは除く) です。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
- 応答データ
| | | | | |
|
int | suspendCount | このスレッドの未処理の中断の回数
|
- エラーデータ
-
スレッドグループの名前を返します。
- 出力データ
| | | | | |
|
threadGroupID | group | スレッドグループのオブジェクト ID
|
- 応答データ
| | | | | |
|
string | groupName | スレッドグループの名前
|
- エラーデータ
-
指定されたスレッドグループを含むスレッドグループ (存在する場合) を返します。
- 出力データ
| | | | | |
|
threadGroupID | group | スレッドグループのオブジェクト ID
|
- 応答データ
| | | | | |
|
threadGroupID | parentGroup | 親スレッドグループオブジェクト、または null (指定されたスレッドグループがトップレベルのスレッドグループの場合)
|
- エラーデータ
-
このスレッドグループに直接含まれるスレッドおよびスレッドグループを返します。子スレッドグループ内のスレッドおよびスレッドグループは、返されません。
- 出力データ
| | | | | |
|
threadGroupID | group | スレッドグループのオブジェクト ID
|
- 応答データ
| | | | | |
|
int | childThreads | 子スレッドの数
|
childThreads 回の繰り返し:
|
|
threadID | childThread | 直接の子スレッド ID
|
int | childGroups | 子スレッドグループの数
|
childGroups 回の繰り返し:
|
|
threadGroupID | childGroup | 直接の子スレッドグループの ID
|
- エラーデータ
-
指定された配列内のコンポーネントの数を返します。
- 出力データ
| | | | | |
|
arrayID | arrayObject | 配列のオブジェクト ID
|
- 応答データ
-
- エラーデータ
-
配列コンポーネントの範囲を返します。指定された範囲は、配列の境界内にある必要があります。
- 出力データ
| | | | | |
|
arrayID | arrayObject | 配列のオブジェクト ID
|
int | firstIndex | 取得する最初のインデックス
|
int | length | 取得するコンポーネントの数
|
- 応答データ
| | | | | |
|
arrayregion | values | 取得した値。値がオブジェクトの場合は、タグ付けされた値。それ以外の場合は、タグ付けされていない値
|
- エラーデータ
-
配列コンポーネントの範囲を設定します。指定された範囲は、配列の境界内にある必要があります。プリミティブ値の場合、各値の型と配列コンポーネントの型は正確に一致している必要があります。オブジェクト値の場合、値型から配列コンポーネント型への広範な参照変換が存在し、かつ配列コンポーネント型がロードされている必要があります。
- 出力データ
| | | | | |
|
arrayID | arrayObject | 配列のオブジェクト ID
|
int | firstIndex | 設定する最初のインデックス
|
int | values | 設定する値の数
|
values 回の繰り返し:
|
|
untagged-value | value | 設定する値
|
- 応答データ
- (なし)
- エラーデータ
-
このクラスローダに対してロードするよう要求されたすべてのクラスのリストを返します。このクラスローダは、返されたリスト内の各クラスの起動クラスローダと見なされます。このリストには、このローダにより定義された各参照型、およびこのクラスローダにより別のクラスローダにロードが委譲されたすべての型が含まれます。可視クラスリストには、型の名前空間に関して、便利な特性があります。特定の型の名前は、リスト中に最高 1 回しか出現しません。このクラスローダにより定義されたクラスの型名を使って宣言されたフィールドまたは変数はそれぞれ、その単一の型に解決される必要があります。
返されるリストの順番は保証されていません。
- 出力データ
| | | | | |
|
classLoaderID | classLoaderObject | クラスローダのオブジェクト ID
|
- 応答データ
| | | | | |
|
int | classes | 可視クラスの数
|
classes 回の繰り返し:
|
|
byte | refTypeTag | あとに続く参照型の種類
|
|
referenceTypeID | typeID | このクラスローダに対する可視クラス
|
- エラーデータ
-
イベント要求を設定します。この要求で指定されたイベントが発生すると、ターゲット 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」オブジェクト
|
- 応答データ
-
- エラーデータ
-
イベント要求を解除します。解除できるイベントの全リストは、JDWP.EventKind を参照指定したイベントの種類と requestID が一致するイベント要求のみが解除されます。一致するイベント要求が存在しない場合、コマンドは無操作で、エラーになりません。自動的に生成されるイベントには、対応するイベント要求がないため、このコマンドで解除されない場合があります。
- 出力データ
| | | | | |
|
byte | eventKind | 解除するイベントタイプ
|
int | requestID | 解除する要求の ID
|
- 応答データ
- (なし)
- エラーデータ
-
設定されているすべてのブレークポイントを削除します。設定されているブレークポイントが存在しない場合は無操作です。
- 出力データ
- (なし)
- 応答データ
- (なし)
- エラーデータ
-
指定されたフレーム内の 1 つまたは複数の局所変数の値を返します。各変数は、フレームのコードインデックスで可視である必要があります。局所変数の情報が利用できなくても、フロントエンドが正しい局所変数インデックスを判別できる場合は、値の取得が可能です。一般に、局所変数テーブルの情報にアクセスしなくても、メソッドシグニチャーからメソッド引数について変数のインデックスを判別できます。
- 出力データ
| | | | | |
|
threadID | thread | フレームのスレッド
|
frameID | frame | フレーム ID
|
int | slots | 取得する値の数
|
slots 回の繰り返し:
|
|
int | slot | フレーム内の局所変数のインデックス
|
|
byte | sigbyte | 変数の型を識別するタグ
|
- 応答データ
| | | | | |
|
int | values | 取得された値の数。slots の取得する値の数と常に等しい
|
values 回の繰り返し:
|
|
value | slotValue | 局所変数の値
|
- エラーデータ
-
1 つまたは複数の局所変数の値を設定します。各変数は、現在のフレームコードインデックスで可視である必要があります。プリミティブ値の場合、値の型と変数の型は正確に一致している必要があります。オブジェクト値の場合、値の型から変数の型への広範な参照変換が存在し、かつ変数の型がロードされている必要があります。局所変数の情報を利用できなくても、フロントエンドが正しい局所変数インデックスを判別できる場合は、値の設定が可能です。一般に、局所変数テーブルの情報にアクセスしなくても、メソッドシグニチャーからメソッド引数について変数のインデックスを判別できます。
- 出力データ
| | | | | |
|
threadID | thread | フレームのスレッド
|
frameID | frame | フレーム ID
|
int | slotValues | 設定する値の数
|
slotValues 回の繰り返し:
|
|
int | slot | スロット ID
|
|
value | slotValue | 設定する値
|
- 応答データ
- (なし)
- エラーデータ
-
このフレームについての「this」参照の値を返します。フレームのメソッドが static またはネイティブの場合、応答には null オブジェクト参照が含まれます。
- 出力データ
| | | | | |
|
threadID | thread | フレームのスレッド
|
frameID | frame | フレーム ID
|
- 応答データ
| | | | | |
|
tagged-objectID | objectThis | このフレームについての「this」オブジェクト
|
- エラーデータ
-
スレッドスタックの一番上のスタックフレームを「フレーム」までポップします。このコマンドを実行するには、スレッドが中断されている必要があります。一番上のスタックフレームは破棄され、「フレーム」の前のスタックフレームが現在のフレームになります。オペランドスタックは回復します。引数が再度追加され、呼び出しが invokestatic
ではなかった場合、objectref
も再度追加されます。Java 仮想マシンプログラムカウンターは、呼び出し命令の操作コードに戻されます。これは JDWP バージョン 1.4 以降です。canPopFrames 機能が必要です (CapabilitiesNew を参照)。
- 出力データ
| | | | | |
|
threadID | thread | スレッドのオブジェクト ID
|
frameID | frame | フレーム ID
|
- 応答データ
- (なし)
- エラーデータ
-
このクラスオブジェクトによりリフレクトされた参照型を返します。
- 出力データ
| | | | | |
|
classObjectID | classObject | クラスオブジェクト
|
- 応答データ
| | | | | |
|
byte | refTypeTag | あとに続く参照型の種類
|
referenceTypeID | typeID | リフレクトされた参照型
|
- エラーデータ
-
ターゲット 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 VMStart - 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 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 の完了スレッドの通知。この通知は、終了しようとしているスレッドにより終了前に生成される。このタイミングのため、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 | イベントを生成させた要求
|
| |
|
NONE | 0 | エラーは発生しなかった。
|
INVALID_THREAD | 10 | 渡されたスレッドが null、無効、またはすでに終了している
|
INVALID_THREAD_GROUP | 11 | 無効なスレッドグループ
|
INVALID_PRIORITY | 12 | 無効な優先順位
|
THREAD_NOT_SUSPENDED | 13 | 指定されたスレッドは、イベントによって中断されていない
|
THREAD_SUSPENDED | 14 | スレッドはすでに中断されている
|
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_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
|
NOT_IMPLEMENTED | 99 | この機能はこの仮想マシンに実装されていない
|
NULL_POINTER | 100 | 無効なポインタ
|
ABSENT_INFORMATION | 101 | 目的の情報を入手できない
|
INVALID_EVENT_TYPE | 102 | 指定されたイベント型の ID が認識されない
|
ILLEGAL_ARGUMENT | 103 | 不正な引数
|
OUT_OF_MEMORY | 110 | 関数でメモリの割り当てが必要になったが、これ以上割り当てられるメモリがなかった
|
ACCESS_DENIED | 111 | この仮想マシンではデバッグが有効になっていない。JVMDI が使用できない
|
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 | カウントが無効
|
| |
|
VM_DISCONNECTED | 100 | JDWP を越えて送信されることはない
|
VM_START | JDWP.EventKind.VM_INIT |
|
THREAD_DEATH | JDWP.EventKind.THREAD_END |
|
SINGLE_STEP | 1 |
|
BREAKPOINT | 2 |
|
FRAME_POP | 3 |
|
EXCEPTION | 4 |
|
USER_DEFINED | 5 |
|
THREAD_START | 6 |
|
THREAD_END | 7 |
|
CLASS_PREPARE | 8 |
|
CLASS_UNLOAD | 9 |
|
CLASS_LOAD | 10 |
|
FIELD_ACCESS | 20 |
|
FIELD_MODIFICATION | 21 |
|
EXCEPTION_CATCH | 30 |
|
METHOD_ENTRY | 40 |
|
METHOD_EXIT | 41 |
|
VM_INIT | 90 |
|
VM_DEATH | 99 |
|
| |
|
ZOMBIE | 0 |
|
RUNNING | 1 |
|
SLEEPING | 2 |
|
MONITOR | 3 |
|
WAIT | 4 |
|
| |
|
SUSPEND_STATUS_SUSPENDED | 0x1 |
|
| |
|
VERIFIED | 1 |
|
PREPARED | 2 |
|
INITIALIZED | 4 |
|
ERROR | 8 |
|
| |
|
CLASS | 1 | 参照型ははクラス
|
INTERFACE | 2 | 参照型はインタフェース
|
ARRAY | 3 | 参照型は配列
|
| |
|
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 サイズ)
|
| |
|
INTO | 0 | ステップの終了前に、メソッド呼び出しがあれば、その中に入る
|
OVER | 1 | ステップの終了前に、メソッド呼び出しがあれば、そのメソッドをすべて実行する
|
OUT | 2 | 現在のメソッドから出ステップアウトする
|
| |
|
MIN | 0 | 可能な最小の量 (多くの場合、バイトコード命令) だけステップ実行する
|
LINE | 1 | 次のソース行までステップ実行する。行番号情報が存在しない場合は、MIN ステップが実行される
|
| |
|
NONE | 0 | このイベントの遭遇時にスレッドを中断しない
|
EVENT_THREAD | 1 | このイベントの遭遇時にイベントスレッドを中断する
|
ALL | 2 | このイベントの遭遇時にすべてのスレッドを中断する
|
呼び出しオプションは、次のビットフラグのうち、0 個以上のビットを組み合わせたもの
| |
|
INVOKE_SINGLE_THREADED | 0x01 | それ以外の場合、開始したすべてのスレッド
|
INVOKE_NONVIRTUAL | 0x02 | それ以外の場合、通常の仮想呼び出し (インスタンスメソッドのみ)
|