JavaTM Debug Wire Protocol Transport Interface (jdwpTransport) |
トランスポートは、一連の関数としてダイナミックライブラリ (DLL または共用ライブラリと呼ばれることもある) に実装されます。ライブラリは、起動時に JDWP エージェント (またはほかのエージェント) によって呼び出される onload 関数をエクスポートします。
JVMTI と同様に、jdwpTransport 関数には、「環境ポインタ」と呼ばれるインタフェースポインタを介してアクセスします。環境ポインタは、環境へのポインタで、jdwpTransportEnv* 型を持ちます。環境ポインタは onload 関数から JDWP などのエージェントへ返されます。
トランスポートは、1 つの環境または複数の環境をサポートする場合があります。つまり、トランスポートは同時に 1 つのエージェントだけで使用されることも、複数のエージェントで使用されることもあります。トランスポートが複数の環境をサポートする場合は、onload 関数を呼び出すたびに新しい環境ポインタが返されます。トランスポートが 1 つの環境のみをサポートする場合、onload 関数の 2 回目以降の呼び出しはエラーを返します。
トランスポートはスレッドセーフです。また、jdwpTransport 関数は複数の並列スレッドで使用できます。たとえば、別のスレッドが WritePacket 関数を呼び出してパケットを書き込む間にパケットを待機するために、あるスレッドが jdwpTransport ReadPacket 関数でブロックされる場合があります。
ほとんどの場合、jdwpTransport 関数は、復帰状態を表す jdwpTransportError 値を返します。関数によっては、呼び出し側の関数で指定されたポインタにより、これ以外の値を返します。戻り値の値が jdwpTransport 関数によって割り当てられる場合、この関数は、エージェントが指定するメモリ割り当てルーチンを使用します。メモリ割り当てルーチンは、onload 関数を介して、起動時にトランスポートに指定されます。
エラーの場合 (つまり、jdwpTransport 関数の 1 つが JDWPTRANSPORT_ERROR_NONE 以外の値を返す場合) は、jdwpTransport 関数 GetLastError の呼び出しによってエラーを表す文字列をあとで取得できます。エラーはスレッドベースで記録されます。GetLastError 関数は、現在のスレッドのみで最後に発生したエラーを表す文字列を返します。
トランスポートライブラリの開発には、各種規則と C/C++ の定義を呼び出す C 言語をサポートする任意のネイティブ言語を使用できます。
jdwpTransport インタフェースを使用するために必要な関数、イベント、データ型、定数の定義は、インクルードファイル jdwpTransport.h で定義されます。 これらの定義を使用するには、J2SE TM インクルードディレクトリをインクルードパスに追加し、ソースコードに次の行を追加します。
#include "jdwpTransport.h"
トランスポートライブラリは、次のプロトタイプを持つ onload 関数をエクスポートしている必要があります。
JNIEXPORT jint JNICALL jdwpTransport_OnLoad(JavaVM *jvm, jdwpTransportCallback *callback, jint version, jdwpTransportEnv** env);
この関数は、ライブラリのロード時に JDWP などのエージェントによって呼び出されます。
jvm 引数は、エージェントが JNI の GetJavaVM 関数を呼び出すことで取得された JNI 呼び出しインタフェースです。
callback 引数は、トランスポートが使用する、メモリ管理ルーチンの関数テーブルへのポインタです。この関数テーブルは、トランスポートの実装で割り当てられる戻り値用にメモリを割り当てるために使用されます。
typedef struct jdwpTransportCallback { void* (*alloc)(jint numBytes); void (*free)(void *buffer); } jdwpTransportCallback;
callback 引数は onload 関数で有効であり、そのためトランスポートは jdwpTransport_OnLoad 関数で関数テーブルをコピーする必要があります。
関数テーブルには 2 つのエントリがあります。alloc 関数はメモリの領域を割り当てます。この関数には割り当てるバイト数を指定する単一の引数があります。alloc 関数は、割り当てられたメモリの先頭位置へのポインタを返します。メモリ要求を受け付けることができない場合は NULL を返します。要求されたバイト数が 0 の場合は、NULL が返されます。free 関数は、alloc 関数を使用して割り当て済みのメモリ領域を解放します。
エージェントが提供するメモリ管理関数はスレッドセーフであり、これらの関数への呼び出しを同期するのにトランスポートの実装は必要ありません。メモリ管理関数の実装では、jdwpTransport 関数を呼び出さないことが保証されています。
version は、エージェントが必要とするトランスポートインタフェースのバージョンです。これは、JDWPTRANSPORT_VERSION_1_0 のように指定されます。
env は、関数によって返される環境ポインタへのポインタです。
トランスポートの初期化が正常に行われた場合、jdwpTransport_OnLoad 関数は、JNI_OK を返します。初期化に失敗した場合は、次のエラーが返されます。
JNI_ENOMEM JNI_EVERSION JNI_EEXIST
初期化を完了するためのメモリが不足している場合は、JNI_ENOMEM が返されます。
version 引数のバージョンが JDWPTRANSPORT_VERSION_1_0 ではない場合、JNI_EVERSION が返されます。
トランスポートが 1 つの環境のみをサポートし、onload 関数の最初の呼び出しによって環境ポインタがすでに返されている場合は、JNI_EEXIST が返されます。
jdwpTransport 関数は、次のようなカテゴリに分類されます。
接続管理関数は、デバッガとの接続を確立および切断するときに使用されます。接続は、デバッガへのおよびデバッガからの JDWP パケットの確実な流れを提供します。接続に書き込まれるパケットは、書き込まれたとおりの順序でデバッガによって読み取られます。同様に、デバッガから接続に書き込まれたパケットは、書き込まれたとおりの順序で読み取られます。
接続は、「能動的」または「受動的」に確立されます。接続を「能動的」に確立する場合は、デバッガとの接続を開始するために jdwpTransport の Attach 関数が呼び出されます。接続を「受動的」に確立する場合は、トランスポートを「待機モード」にしてデバッガからの接続を待機させるために、jdwpTransport の StartListening 関数が呼び出されます。待機モードになると、接続を受け入れるために Accept 関数が使用されます。接続の確立方法にかかわらず、接続を切断するときに Close 関数が使用され、接続がデバッガに対して開かれているかどうかをテストするときに IsOpen が使用されます。
jdwpTransportError Attach(jdwpTransportEnv* env, const char* address, jlong attachTimeout, jlong handshakeTimeout)
デバッガに接続します。デバッガへの接続は、2 つの手順で行われます。最初に、指定したアドレスへの接続が確立されます。接続が確立されると、デバッガへの接続が確かに確立されたことを確認するために、「ハンドシェーク」が実行されます。ハンドシェークでは、Java Debug Wire Protocol 仕様で指定されている ASCII 文字列 JDWP-Handshake の交換が行われます。
address 引数は、デバッガのアドレスを表す文字列へのポインタです。正確な形式は、トランスポートに固有です (TCP/IP ベースのトランスポートの場合は、アドレスにデバッガのホスト名とポート番号が含まれることがある。シリアルポートを介した接続をサポートするトランスポートの場合は、シリアルポートのデバイス名になることがある)。
attachTimeout 引数は、接続時に使用するタイムアウトを指定します。トランスポートが接続タイムアウト (GetCapabilities を参照) をサポートし、attachTimeout が正の場合、デバッガへの接続時に使用するタイムアウトをミリ秒単位で指定します。トランスポートが接続タイムアウトをサポートしない場合、または attachTimeout が 0 に指定されている場合は、接続時にタイムアウトは使用されません。
handshakeTimeout 引数は、デバッガとのハンドシェークに使用されるタイムアウトを指定します。トランスポートがハンドシェークタイムアウト (GetCapabilities を参照) をサポートし、handshakeTimeout が正の場合、デバッガとのハンドシェーク時に使用するタイムアウトをミリ秒単位で指定します。ハンドシェークタイムアウトの正確な使用法は、トランスポートに固有です。たとえば、ある実装では、デバッガからの JDWP-Handshake メッセージを待機する間の文字間タイムアウトとしてタイムアウトが使用される場合があります。別の実装では、タイムアウトを使用してハンドシェークの交換のために許可される合計時間を示します。一般に、ハンドシェークタイムアウトの目的は、トランスポートが有効なデバッガ以外に接続する場合のエラー処理を考慮することです。トランスポートがハンドシェークタイムアウトをサポートしない場合、または handshakeTimeout が 0 に指定されている場合は、ハンドシェーク時にタイムアウトは使用されません。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT JDWPTRANSPORT_ERROR_ILLEGAL_STATE JDWPTRANSPORT_ERROR_IO_ERROR JDWPTRANSPORT_ERROR_TIMEOUT
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT は、address が無効か、または timeout が負の場合に返されます。
JDWPTRANSPORT_ERROR_ILLEGAL_STATE は、トランスポートが現在「待機モード」 (StartListening を参照) に入っているか、デバッガに対してオープン接続がすでに存在する場合に返されます (IsOpen を参照)。
JDWPTRANSPORT_ERROR_IO_ERROR は、デバッガへの接続中に (接続タイムアウト以外の) エラーが発生した場合に返されます。初期ハンドシェーク中のエラー (ハンドシェークタイムアウトを含む) は、I/O エラーとみなされます。I/O エラーは、トランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
JDWPTRANSPORT_ERROR_TIMEOUT は、トランスポートが接続タイムアウトをサポートする場合、attachTimeout の値が正の場合、およびその attachTimeout の時間内でデバッガとの接続を確立できない場合に返されます。
jdwpTransportError StartListening(jdwpTransportEnv* env, const char* address, char** actualAddress);
トランスポートを「待機モード」にして、デバッガからの接続を待機します。
address 引数は、トランスポートが待機するローカルアドレスを表す文字列へのポインタです。正確な形式は、トランスポートに固有です (TCP/IP ベースのトランスポートの場合は、アドレスにローカル TCP ポート番号が含まれることがある。シリアルポートを介した接続をサポートするトランスポートの場合は、シリアルポートのデバイス名になることがある)。address 引数は、NULL または空の文字列で指定することができます (最初の文字は \0)。その場合、トランスポートは、トランスポートに固有のデフォルトのアドレスで待機します。
actualAddress が NULL ではない場合は、StartListening 関数によって返される文字列のアドレスに設定されます。返される文字列には、トランスポートが待機するアドレスの文字列表現が含まれます。これは、address 引数で指定されたアドレスと異なる場合と同じ場合があります。文字列は、jdwpTransport_OnLoad 関数が呼び出されたときにトランスポートに提供される割り当てコールバックを使用して割り当てられます。呼び出し側は、返された文字列の解放を行います。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT JDWPTRANSPORT_ERROR_ILLEGAL_STATE JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT は、address が無効の場合に返されます。
JDWPTRANSPORT_ERROR_ILLEGAL_STATE は、デバッガに対してオープン接続がすでに存在するか (IsOpen を参照)、トランスポートがすでに待機モードに入っている場合に返されます。
JDWPTRANSPORT_ERROR_IO_ERROR は、トランスポートを待機モードにするときにエラーが発生した場合に返されます。エラーの性質はトランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
jdwpTransportError StopListening(jdwpTransportEnv* env)
トランスポートを「待機モード」から解放して、デバッガからの接続を待機しないようにします。
トランスポートが「待機モード」に入っている場合は、このモードから解放します。デバッガに対してオープン接続 (IsOpen を参照) が存在する場合は、この関数によって影響を受けることはありません。つまり、StopListening は、デバッガへの接続を切断しません。トランスポートが待機モードに入っていない場合、この関数は何も実行せず、エラーは返されません。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_IO_ERROR は、トランスポートを待機モードから解放するときにエラーが発生した場合に返されます。エラーの性質はトランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
jdwpTransportError Accept(jdwpTransportEnv* env, jlong acceptTimeout, jlong handshakeTimeout)
デバッガからの接続を受け入れます。デバッガからの接続の受け入れは、2 つの手順で行われます。最初に、デバッガによって接続が確立されます。接続が確立されると、デバッガによる接続が確かに確立されたことを確認するために、「ハンドシェーク」が実行されます。ハンドシェークでは、Java Debug Wire Protocol 仕様で指定されている ASCII 文字列 JDWP-Handshake の交換が行われます。
acceptTimeout 引数は、デバッガからの接続を待機するときに使用するタイムアウトを指定します。トランスポートが受け入れタイムアウト (GetCapabilities を参照) をサポートし、acceptTimeout が正の場合、デバッガからの接続を待機するときに使用するタイムアウトをミリ秒単位で指定します。トランスポートが受け入れタイムアウトをサポートしない場合、または timeout が 0 に指定されている場合は、接続の待機は無制限にブロックされます。
handshakeTimeout 引数は、デバッガとのハンドシェークに使用されるタイムアウトを指定します。トランスポートがハンドシェークタイムアウト (GetCapabilities を参照) をサポートし、handshakeTimeout が正の場合、デバッガとのハンドシェーク時に使用するタイムアウトをミリ秒単位で指定します。ハンドシェークタイムアウトの正確な使用法は、トランスポートに固有です。たとえば、ある実装では、デバッガからの JDWP-Handshake メッセージを待機する間の文字間タイムアウトとしてタイムアウトが使用される場合があります。別の実装では、タイムアウトを使用してハンドシェークの交換のために許可される合計時間を示します。一般に、ハンドシェークタイムアウトの目的は、デバッガ以外が debuggee への接続を確立する場合のエラー処理を考慮することです。トランスポートがハンドシェークタイムアウトをサポートしない場合、または handshakeTimeout が 0 に指定されている場合は、ハンドシェーク時にタイムアウトは使用されません。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT JDWPTRANSPORT_ERROR_ILLEGAL_STATE JDWPTRANSPORT_ERROR_IO_ERROR JDWPTRANSPORT_ERROR_TIMEOUT
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT は、attachTimeout または handshakeTimeout が負の場合に返されます。
JDWPTRANSPORT_ERROR_ILLEGAL_STATE は、デバッガに対してオープン接続がすでに存在するか (IsOpen を参照)、トランスポートが待機モードに入っていない場合に返されます (StartListening を参照)。
JDWPTRANSPORT_ERROR_IO_ERROR は、デバッガからの接続の受け入れ中に (受け入れタイムアウト以外の) エラーが発生した場合に返されます。初期ハンドシェーク中のエラー (ハンドシェークタイムアウトを含む) は、I/O エラーとみなされます。エラーの性質はトランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
JDWPTRANSPORT_ERROR_TIMEOUT は、トランスポートが受け入れタイムアウトをサポートする場合、acceptTimeout の値が正の場合、およびそのタイムアウトの時間内でデバッガとの接続を確立できない場合に返されます。
注: デバッガからの接続の待機中に Accept でブロックされているスレッドは、StopListening を呼び出す別のスレッドによって割り込まれる可能性があります。その場合、Accept を呼び出したスレッドは、I/O エラーが発生したことを示す JDWPTRANSPORT_ERROR_IO_ERROR を返します。Accept でブロックされているスレッドが接続を受け入れて、デバッガとのハンドシェークを処理している場合、StopListening は接続を中断しません。
jboolean isOpen(jdwpTransportEnv* env)
デバッガに対してオープン接続が存在するかどうかを指定します。
デバッガに対してオープン接続が存在する場合 (にのみ)、JNI_TRUE を返します。それ以外の場合は、JNI_FALSE を返します。
jdwpTransportError Close(jdwpTransportEnv* env)
デバッガに対してオープン接続を閉じます。
デバッガに対してオープン接続が存在しない場合 (IsOpen を参照)、この関数は何も実行せず、エラーは返されません。
I/O 関数 (つまり、ReadPacket および WritePacket) でブロックされているスレッドが存在する場合、これらの I/O 関数はクローズによって中断され、I/O エラーが発生したことを示す JDWPTRANSPORT_ERROR_IO_ERROR を返します。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_IO_ERROR は、接続を切断するときにエラーが発生した場合に返されます。エラーの性質はトランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
I/O 関数は、JDWP パケットのデバッガからの読み取りおよびデバッガへの書き込みに使用されます。
typedef struct { jint len; jint id; jbyte flags; jbyte cmdSet; jbyte cmd; jbyte *data; } jdwpCmdPacket; typedef struct { jint len; jint id; jbyte flags; jshort errorCode; jbyte *data; } jdwpReplyPacket; typedef struct jdwpPacket { union { jdwpCmdPacket cmd; jdwpReplyPacket reply; } type; } jdwpPacket; jdwpTransportError ReadPacket(jdwpTransportEnv* env, jdwpPacket* packet)
デバッガに対してオープン接続から JDWP パケットを読み取ります。
この関数は、オープン接続に対して「ブロックリード」を実行します。すべての JDWP パケットが返されるまで、またはストリーム指向プロトコルベースのトランスポートの場合に、ストリームの終わりが検出されるまで無制限にブロックします。
packet 引数は、この関数によって設定される jdwpPacket 構造体のアドレスです。packet.type.cmd.len または packet.type.reply.len フィールド (パケットがコマンドパケットか応答パケットかによって異なる) には、パケットの長さが設定されます。ストリームの終わりが検出された場合、長さのフィールドは 0 に設定され、パケットのその他のフィールドはすべて未定義になります。パケットのすべてではなく一部のバイトが読み取られた後にストリームの終わりが検出された場合は、I/O エラーとみなされ、JDWPTRANSPORT_ERROR_IO_ERROR が返されます。その場合、長さのフィールドは設定されません。パケット全体が読み取られると、パケットのすべてのフィールドには、ホスト順で値が設定されます。これは、JDWP パケットを転送するときに必要なビッグエンディアンの順序と異なる場合と同じ場合があります。
packet.type.cmd.data または packet.type.reply.data フィールド (パケットがコマンドパケットか応答パケットかによって異なる) には、NULL またはこの関数によって割り当てられたパケットデータへのポインタが設定されます。パケットデータは、jdwpTransport_OnLoad 関数が呼び出されたときにトランスポートに提供される割り当てコールバックを使用して割り当てられます。呼び出し側は、パケットデータの解放を行います。パケットデータ (ヘッダが存在する場合はヘッダの後のデータ) のレイアウトは、受信したときのバイト順で呼び出し側に返されます。
ReadPacket 関数は、パケットの長さ (最初の 4 バイトで示される) が >= 11 バイトであることをチェックするだけで、返されたパケットに対して整合性チェックを行いません。length フィールドが 11 バイト未満の場合は、JDWPTRANSPORT_ERROR_IO_ERROR が返されます。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_IO_ERROR JDWPTRANSPORT_ERROR_ILLEGAL_STATE JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT
JDWPTRANSPORT_ERROR_IO_ERROR は、読み取り中に I/O エラーが発生した場合、Close 関数を呼び出す別のスレッドによって非同期に接続が閉じられた場合、または不正な形式のパケット (length フィールドが 11 バイト未満) を受信した場合に返されます。I/O エラーは、トランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
JDWPTRANSPORT_ERROR_ILLEGAL_STATE は、デバッガに対してオープン接続が存在しない場合 (IsOpen を参照) に返されます。
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT は、packet が NULL の場合に返されます。
jdwpTransportError WritePacket(jdwpTransportEnv* env, const jdwpPacket* packet)
オープン接続に JDWP パケットを書き込みます。
packet 引数は、jdwpPacket 構造体へのポインタです。パケットヘッダのすべてのフィールドは、ホスト順で格納される必要があります。パケットデータフィールド (packet.type.cmd.data または packet.type.reply.data) は、NULL またはヘッダの直後のパケットデータが格納されている場所へのポインタでなければなりません。パケットデータは、ネットワーク順 (ビッグエンディアン) で転送の準備ができている必要があります。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT JDWPTRANSPORT_ERROR_IO_ERROR JDWPTRANSPORT_ERROR_ILLEGAL_STATE
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT は、packet が NULL の場合、パケットの長さのフィールド (packet.type.cmd.len または packet.type.reply.len) が 11 未満の場合、またはこのフィールドが 11 以上でもパケットデータフィールド (packet.type.cmd.data または packet.type.reply.data) が NULL の場合に返されます。
JDWPTRANSPORT_ERROR_IO_ERROR は、書き込み中に I/O エラーが発生した場合、または Close 関数を呼び出す別のスレッドによって非同期に接続が閉じられた場合に返されます。I/O エラーは、トランスポートに固有です。GetLastError を使って、エラーの文字列表現を取得することができます。
JDWPTRANSPORT_ERROR_ILLEGAL_STATE は、デバッガに対してオープン接続が存在しない場合 (IsOpen を参照) に返されます。
jdwpTransportError GetLastError(jdwpTransportEnv* env, char** msg);
最後のエラーの文字列表現を返します。
発生したエラーは、スレッドごとに記録されます。GetLastError のそれ以降の呼び出しは、最後の I/O エラーの文字列表現を返します。
msg 引数は、この関数によって返される null で終わる文字列へのポインタです。文字列は、jdwpTransport_OnLoad 関数が呼び出されたときにトランスポートに提供される割り当てコールバックを使用して割り当てられます。呼び出し側は、返された文字列の解放を行います。
この関数は、汎用エラー、または次のエラーのどれかを返します。
JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE
JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE は、このスレッドで I/O エラーが発生しなかったか、使用可能な最後のエラーの文字列表現が存在しない場合に返されます。
typedef struct { unsigned int can_timeout_attach :1; unsigned int can_timeout_accept :1; unsigned int can_timeout_handshake :1; unsigned int reserved3 :1; unsigned int reserved4 :1; unsigned int reserved5 :1; unsigned int reserved6 :1; unsigned int reserved7 :1; unsigned int reserved8 :1; unsigned int reserved9 :1; unsigned int reserved10 :1; unsigned int reserved11 :1; unsigned int reserved12 :1; unsigned int reserved13 :1; unsigned int reserved14 :1; unsigned int reserved15 :1; } JDWPTransportCapabilities; jdwpTransportError GetCapabilities(jdwpTransportEnv* env, JDWPTransportCapabilities* capabilitiesPtr)
capabilitiesPtr を介して、このトランスポートでサポートされているオプションの jdwpTransport 機能を返します。capabilities 構造体には、フラグ名に示されている機能がサポートされているかどうかを示す、いくつかの boolean 型のフラグが含まれています。現在のフラグのセットは、以下のとおりです。
can_timeout_attach | トランスポートでタイムアウトを使用する接続がサポートされるかどうかを示す |
can_timeout_accept | トランスポートで受け入れタイムアウトがサポートされるかどうかを示す |
can_timeout_handshake | 接続の確立時にデバッガと初期ハンドシェークを実行するときにトランスポートでタイムアウトがサポートされるかどうかを示す |
この関数はエラーを返しません。
JDWPTRANSPORT_ERROR_NONE | エラーが発生しなかったことを示す。関数の実行が正常に終了したときに返されるエラーコード |
JDWPTRANSPORT_ERROR_OUT_OF_MEMORY | 関数でメモリの割り当てが必要になったが、これ以上割り当てられるメモリがなかったことを示す |
JDWPTRANSPORT_ERROR_INTERNAL | 予期しない内部エラーが発生したを示す |
Copyright© 2004 Sun Microsystems, Inc.All Rights Reserved.
コメントの送付先: java-debugger@sun.com |