Java 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関数が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)として指定できます。 その場合、トランスポートは、トランスポートに固有のデフォルトのアドレスで待機します。

actualAddressNULLでない場合は、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を返します。

閉じる

jdwpTransportError
Close(jdwpTransportEnv* env)

デバッガへの開いている接続を閉じます。

デバッガへの開いている接続が存在しない場合(IsOpenを参照)、この関数は何も実行せず、エラーは返されません。

任意のI/O関数(つまり、ReadPacketWritePacket)でブロックされているスレッドが存在する場合、これらの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を使って、エラーの文字列表現を取得できます。

JDWPTRANSPORT_ERROR_ILLEGAL_STATEは、デバッガに対してオープン接続が存在しない場合(IsOpenを参照)に返されます。

JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENTは、packetNULLの場合に返されます。

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は、packetNULLの場合、パケットの長さのフィールド(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を参照)に返されます。

その他の関数

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型のフラグ 意味
can_timeout_attach トランスポートでタイム・アウトを使用する接続がサポートされるかどうかを示す
can_timeout_accept トランスポートで受け入れタイム・アウトがサポートされるかどうかを示す
can_timeout_handshake 接続の確立時にデバッガと初期ハンドシェークを実行するときにトランスポートでタイム・アウトがサポートされるかどうかを示す

この関数はエラーを返しません。

汎用エラー

エラー 意味
JDWPTRANSPORT_ERROR_NONE エラーは発生しなかった。 関数の実行が正常に終了したときに返されるエラー・コード。
JDWPTRANSPORT_ERROR_OUT_OF_MEMORY 関数でメモリーの割当てが必要になったが、これ以上割り当てられるメモリーがなかった。
JDWPTRANSPORT_ERROR_INTERNAL 予期しない内部エラーが発生した。