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 メッセージを待機する間の文字間タイムアウトとしてタイムアウトが使用される場合があります。別の実装では、タイムアウトを使用してハンドシェークの交換のために許可される合計時間を示します。一般に、ハンドシェークタイムアウトの目的は、デバッガ以外が 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 は接続を中断しません。


IsOpen

jboolean
isOpen(jdwpTransportEnv* env)

デバッガへの開いている接続が存在するかどうかを指定します。

デバッガへの開いている接続が存在する場合のみ、JNI_TRUE を返します。それ以外の場合は、JNI_FALSE を返します。


Close

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 予期しない内部エラーが発生した。

Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.