トランスポートは、一連の関数としてダイナミック・ライブラリ(DLLまたは共用ライブラリと呼ばれることもある)に実装されます。 ライブラリは、起動時にJDWPエージェント(またはほかのエージェント)によって呼び出されるonload関数をエクスポートします。
JVMTIと同様に、jdwpTransport関数には、環境ポインタと呼ばれるインタフェース・ポインタを介してアクセスします。 環境ポインタは、環境へのポインタで、jdwpTransportEnv*
型を持ちます。 環境ポインタは、onload関数からJDWPエージェント(またはほかのエージェント)に返されます。
トランスポートは、1つの環境または複数の環境をサポートする場合があります。 つまり、トランスポートは同時に1つのエージェントだけで使用されることも、複数のエージェントで使用されることもあります。 トランスポートが複数の環境をサポートする場合は、onload関数を呼び出すたびに新しい環境ポインタが返されます。 トランスポートが1つの環境のみをサポートする場合、onload関数の2回目以降の呼出しはエラーを返します。
トランスポートはスレッドセーフです。また、jdwpTransport関数は複数の並列スレッドで使用できます。 たとえば、別のスレッドがWritePacket
関数を呼び出してパケットを書き込んでいる間に、あるスレッドがパケットの待機中にjdwpTransportのReadPacket
関数内でブロックされる場合があります。
ほとんどの場合、jdwpTransport関数は、復帰ステータスを表すjdwpTransportError
値を返します。 関数によっては、呼出し側の関数で指定されたポインタにより、これ以外の値を返します。 戻り値の値がjdwpTransport関数によって割り当てられる場合、この関数は、エージェントが指定するメモリー割当てルーチンを使用します。 メモリー割当てルーチンは、onload関数を介して、起動時にトランスポートに対して指定されます。
エラーの場合(つまり、いずれかのjdwpTransport関数がJDWPTRANSPORT_ERROR_NONE
以外の値を返した場合)は、そのエラーを表す文字列をjdwpTransport関数GetLastError
を呼び出してあとで取得できます。 エラーは、スレッドごとに記録されます。 GetLastError
関数は、現在のスレッドで発生した最後のエラーのみを表す文字列を返します。
トランスポートの実装の開発
トランスポート・ライブラリの開発には、各種規則とC/C++の定義を呼び出すC言語をサポートする任意のネイティブ言語を使用できます。
jdwpTransportインタフェースの使用に必要な関数、データ・タイプ、および定数定義は、インクルード・ファイルjdwpTransport.hで定義されています。これらの定義を使用するには、インクルード・パスにJava SEインクルード・ディレクトリを追加します:
#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
関数は、メモリーの領域を割り当てます。 この関数には、割り当てるバイト数を指定するための1つの引数があります。 割り当てられたメモリーの先頭へのポインタを返します。メモリー・リクエストを受け付けられない場合はNULLを返します。 要求されたバイト数が0の場合は、NULLが返されます。 free
関数は、alloc
関数を使用して以前に割り当てられたメモリーの領域の割り当てを解除します。
エージェントが提供するメモリー管理関数はスレッド・セーフであり、これらの関数への呼出しを同期するのにトランスポートの実装は必要ありません。 メモリー管理関数の実装では、jdwpTransport関数を呼び出さないことが保証されています。
version
は、エージェントが予測するトランスポート・インタフェースのバージョンです。 これは、JDWPTRANSPORT_VERSION_1_0
として指定する必要があります。
env
は、この関数によって返される環境ポインタへのポインタです。
トランスポートが正常に初期化された場合、jdwpTransport_OnLoad
関数はJNI_OK
を返します。 初期化に失敗すると、次のエラーのいずれかが返されます:
JNI_ENOMEM
JNI_EVERSION
JNI_EEXIST
JNI_ENOMEM
は、初期化を完了するためのメモリーが不足している場合に返されます。
JNI_EVERSION
は、version
引数のバージョンがJDWPTRANSPORT_VERSION_1_0
でない場合に返されます。
JNI_EEXIST
は、トランスポートが1つの環境のみをサポートし、かつ環境ポインタが以前にonload関数の最初の呼出しによって返されている場合に返されます。
関数
jdwpTransport関数は、次のようなカテゴリに分類されます。
接続管理
接続管理関数は、デバッガとの接続を確立および切断するときに使用されます。 接続は、デバッガへのおよびデバッガからのJDWPパケットの確実な流れを提供します。 接続に書き込まれるパケットは、書き込まれたとおりの順序でデバッガによって読み取られます。 同様に、デバッガから接続に書き込まれたパケットは、書き込まれたとおりの順序で読み取られます。
接続は、能動的に、または受動的に確立されます。 「アクティブに」接続を確立すると、jdwpTransportのAttach
関数がコールされ、デバッガに接続が開始されます。 「パッシブに」接続を確立すると、jdwpTransportのStartListening
関数を使用してトランスポートを「リスニング・モード」に配置し、デバッガからの接続をリスニングします。 待機モードになると、接続を受け入れるためにAccept
関数が使用されます。 接続の確立方法にかかわらず、接続を閉じるためにClose
関数が使用され、デバッガへの接続が開かれているかどうかをテストするためにIsOpen
が使用されます。
Attach
jdwpTransportError
Attach(jdwpTransportEnv* env, const char* address,
jlong attachTimeout, jlong handshakeTimeout)
デバッガに接続します。 デバッガへの接続は、2つのステップで行われます。 最初に、指定されたaddress
への接続が確立されます。 接続が確立されると、デバッガへの接続が実際に確立されたことを確認するためにハンドシェークが実行されます。 ハンドシェークでは、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期間内にデバッガへの接続を確立できない場合に返されます。
StartListening
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を使って、エラーの文字列表現を取得できます。
StopListening
jdwpTransportError
StopListening(jdwpTransportEnv* env)
トランスポートを待機モードから解放して、デバッガからの接続を待機しないようにします。
トランスポートが待機モードにある場合は、このモードから解放されます。 デバッガへの開いている接続が存在する場合(IsOpenを参照)、その接続はこの関数によって影響を受けません。 つまり、StopListening
がデバッガへの接続を閉じることはありません。 トランスポートが待機モードに入っていない場合、この関数は何も実行せず、エラーは返されません。
この関数は、汎用エラー、または次のエラーのいずれかを返します。
JDWPTRANSPORT_ERROR_IO_ERROR
JDWPTRANSPORT_ERROR_IO_ERROR
は、トランスポートを待機モードから解放しているときにエラーが発生した場合に返されます。 エラーの性質はトランスポートに固有です。 GetLastErrorを使って、エラーの文字列表現を取得できます。
Accept
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メッセージを待機する間の文字間タイムアウトとしてタイムアウトが使用される場合があります。 別の実装では、タイムアウトを使用してハンドシェークの交換のために許可される合計時間を示します。 一般に、ハンドシェーク・タイムアウトの目的は、デバッガ以外がデバッグ対象への接続を確立する場合のエラー処理を可能にすることです。 トランスポートがハンドシェーク・タイムアウトをサポートしない場合、または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
は接続を中断しません。
IsOpen
jboolean
isOpen(jdwpTransportEnv* env)
デバッガへの開いている接続が存在するかどうかを指定します。
デバッガへの開いている接続が存在する場合のみ、JNI_TRUE
を返します。 それ以外の場合は、JNI_FALSE
を返します。
Close
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関数
I/O関数は、JDWPパケットのデバッガからの読み取りおよびデバッガへの書込みに使用されます。
ReadPacket
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を使って、エラーの文字列表現を取得できます。
デバッガ (IsOpenを参照してください)へのオープン接続がない場合、JDWPTRANSPORT_ERROR_ILLEGAL_STATE
が返されます。
JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT
は、packet
がNULL
の場合に返されます。
WritePacket
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を使って、エラーの文字列表現を取得できます。
デバッガ (IsOpenを参照してください)へのオープン接続がない場合、JDWPTRANSPORT_ERROR_ILLEGAL_STATE
が返されます。
その他の関数
GetLastError
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エラーが発生しなかった場合、または最後のエラーの文字列表現が使用可能でない場合に返されます。
GetCapabilities
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)
このトランスポートによってサポートされているオプションのjdwpTransport機能をcapabilitiesPtr
を介して返します。 capabilities構造体には、フラグ名に示されている機能がサポートされているかどうかを示す、いくつかのboolean型のフラグが含まれています。 現在のフラグのセットは、次のとおりです。
boolean型のフラグ | Meaning |
---|---|
can_timeout_attach |
トランスポートでタイム・アウトを使用する接続がサポートされるかどうかを示す |
can_timeout_accept |
トランスポートで受け入れタイム・アウトがサポートされるかどうかを示す |
can_timeout_handshake |
接続の確立時にデバッガと初期ハンドシェークを実行するときにトランスポートでタイム・アウトがサポートされるかどうかを示す |
この関数はエラーを返しません。
汎用エラー
エラー | Meaning |
---|---|
JDWPTRANSPORT_ERROR_NONE |
エラーは発生しなかった。 関数の実行が正常に終了したときに返されるエラー・コード。 |
JDWPTRANSPORT_ERROR_OUT_OF_MEMORY |
関数でメモリーの割当てが必要になったが、これ以上割り当てられるメモリーがなかった。 |
JDWPTRANSPORT_ERROR_INTERNAL |
予期しない内部エラーが発生した。 |