Java Debug Interface

com.sun.jdi
インタフェース VirtualMachineManager


public interface VirtualMachineManager

ターゲット Virtual Machine への接続を管理するマネージャです。 VirtualMachineManager を使用すると、1 つのアプリケーションから複数のターゲット VM をデバッグすることができます。ただし、この逆はサポートされていません。つまり、 ターゲット VM は、複数のデバッガアプリケーションからデバッグすることはできません。 このインタフェースには、リモートターゲット VM への接続を管理するメソッド、および 使用可能なターゲット VM の VirtualMachine ミラーを取得するメソッドが 組み込まれています。

接続の確立に使用するオブジェクトは、いくつかの Connector オブジェクトから選択できます。各コネクタに は、デバッガをターゲット VM に接続する方法がカプセル化されています。

VirtualMachineManager では、デバッガを Virtual Machine に接続するための複数の 方法がサポートされています。次の表に、4 つの例を示します。これらの例では、Sun の 従来の VM で採用されていたコマンド行構文を使用します。 Connector の実装を使用する場合は、これらの例とは 異なる操作が必要になります。
デバッガからターゲット VM を起動する (もっとも簡単で一般的な方法) デフォルトのコネクタの LaunchingConnector.launch(java.util.Map) メソッドを 呼び出す。デフォルトのコネクタは、defaultConnector() を使用して 取得できる。ターゲット VM が起動し、その VM とデバッガ間の接続が確立される。 VirtualMachine ミラーが返される

より詳細に制御することも可能

  • launchingConnectors() によって返されるリストから、トランスポートの種類 など、必要な特性に応じてコネクタを選択する
  • 選択したコネクタの LaunchingConnector.launch(java.util.Map) メソッドを 呼び出す。ターゲット VM が起動し、その VM とデバッガ間の接続が確立される。 VirtualMachine ミラーが返される
デバッガから稼動中の VM に接続する
  • ターゲット VM は、 -Xrunjdwp:transport=xxx,server=y -Xdebug -Xnoagent -Djava.compiler=NONE オプションを使用して起動される
  • ターゲット VM によって、接続を待機するトランスポート固有のアドレスの生成および 出力が行われる
  • デバッガが起動する。トランスポートと「xxx」という名前を照合しながら、 attachingConnectors() によって返されるリストからコネクタを選択する
  • Connector.defaultArguments() によって取得した デフォルトのコネクタのパラメータがユーザに提供される。ユーザは、ターゲット VM によって生成されたトランスポート固有のアドレスを入力できる
  • 選択したコネクタの AttachingConnector.attach(java.util.Map) メソッドを 呼び出し、ターゲット VM に接続する。VirtualMachine ミラーが返される
ターゲット VM からすでに稼動中のデバッガに接続する
  • 起動時に、1 つまたは複数のトランスポートに対して、listeningConnectors() によって返されるリストから 1 つまたは複数のコネクタを選択する
  • 選択した各コネクタに対し、 ListeningConnector.startListening(java.util.Map) メソッドを呼び出す。各呼び出しに対してトランスポート固有のアドレス文字列が生成 され、返される。エンドユーザに、トランスポート名と対応するアドレス文字列が提供 される
  • 選択した各コネクタに対して ListeningConnector.accept(java.util.Map) を呼び出し、 ターゲット VM の接続を待機する
  • エンドユーザが -Xrunjdwp:transport=xxx,address=yyy -Xdebug -Xnoagent -Djava.compiler=NONE オプションを使用して、ターゲット VM を起動する。「xxx」は、デバッガが選択した コネクタ。「yyy」は、 ListeningConnector.accept(java.util.Map) によって、 そのトランスポートに対して生成されたアドレス
  • ListeningConnector.accept(java.util.Map) を呼び出し、 VirtualMachine ミラーが返される
  • ターゲット VM からデバッガを起動する (「Just-In-Time」デバッグと呼ばれる こともある)
  • ターゲット VM が -Xrunjdwp:launch=cmdline,onuncaught=y,transport=xxx,server=y オプションを使用して起動される
  • ターゲット VM 内にキャッチされない例外がスローされる。ターゲット VM によって、 接続を待機するトランスポート固有のアドレスが生成される
  • 次の項目で構成されるコマンド行を使用して、ターゲット VM からデバッガを起動 する。各項目は、空白で区切らなければならない
    • launch= 値
    • transport= 値
    • VM がデバッガの接続を待機する、トランスポート固有の生成されたアドレス
  • 起動時に、トランスポートと「xxx」という名前を照合しながら、 attachingConnectors() によって返されるリストからコネクタを選択する
  • Connector.defaultArguments() によって取得した デフォルトのコネクタのパラメータを変更して、VM が待機するトランスポート固有の アドレスを指定する。オプションで、ほかのコネクタの引数もユーザに提供できる
  • 選択したコネクタの AttachingConnector.attach(java.util.Map) メソッドを 呼び出し、ターゲット VM に接続する。VirtualMachine ミラーが返される
  • 導入されたバージョン:
    1.3

    メソッドの概要
     List allConnectors()
              既知のすべての Connector オブジェクトのリストを 返します。
     List attachingConnectors()
              既知の AttachingConnector オブジェクトのリストを 返します。
     List connectedVirtualMachines()
              デバッガに接続されるすべてのターゲット VM のリストを作成します。
     LaunchingConnector defaultConnector()
              デフォルトのコネクタを識別します。
     List launchingConnectors()
              既知の LaunchingConnector オブジェクトのリストを 返します。
     List listeningConnectors()
              既知の ListeningConnector オブジェクトのリストを 返します。
     int majorInterfaceVersion()
              JDI インタフェースのメジャーバージョン番号を返します。
     int minorInterfaceVersion()
              JDI インタフェースのマイナーバージョン番号を返します。
     

    メソッドの詳細

    defaultConnector

    public LaunchingConnector defaultConnector()
    デフォルトのコネクタを識別します。このコネクタは、特定の特性のコネクタを選択する 必要がない場合に、起動コネクタとして使用します。

    戻り値:
    デフォルトの LaunchingConnector

    launchingConnectors

    public List launchingConnectors()
    既知の LaunchingConnector オブジェクトのリストを 返します。返されたオブジェクトから任意のオブジェクトを選択して、新しいターゲット VM を起動することができます。ただちに、VirtualMachine ミラーが作成 されます。

    戻り値:
    LaunchingConnector オブジェクトのリスト

    attachingConnectors

    public List attachingConnectors()
    既知の AttachingConnector オブジェクトのリストを 返します。返されたオブジェクトから任意のオブジェクトを選択して、既存のターゲット VM に接続することができます。VirtualMachine ミラーが作成されます。

    戻り値:
    AttachingConnector オブジェクトのリスト

    listeningConnectors

    public List listeningConnectors()
    既知の ListeningConnector オブジェクトのリストを 返します。返されたオブジェクトから任意のオブジェクトを選択して、ターゲット VM によって開始された接続を待機できます。 VirtualMachine ミラーが作成され ます。

    戻り値:
    ListeningConnector オブジェクトのリスト

    allConnectors

    public List allConnectors()
    既知のすべての Connector オブジェクトのリストを 返します。

    戻り値:
    Connector オブジェクトのリスト

    connectedVirtualMachines

    public List connectedVirtualMachines()
    デバッガに接続されるすべてのターゲット VM のリストを作成します。リストには、 接続を開始したすべてのターゲット VM と、このマネージャが接続を開始した接続先の すべてのターゲット VM の VirtualMachine インスタンスが含まれます。 ターゲット VM は、VM の接続が解除されるとこのリストから削除されます。リストから VM が削除されると、VMDisconnectEvent は イベントキューに配置されます。

    戻り値:
    ターゲット VM をミラー化する VirtualMachine オブジェクトの リスト

    majorInterfaceVersion

    public int majorInterfaceVersion()
    JDI インタフェースのメジャーバージョン番号を返します。バージョン情報についての 詳細は、VirtualMachine.version() のターゲット VM バージョンと情報、および VirtualMachine.description() を参照してください。

    戻り値:
    メジャーバージョン番号を表す整数

    minorInterfaceVersion

    public int minorInterfaceVersion()
    JDI インタフェースのマイナーバージョン番号を返します。バージョン情報についての 詳細は、VirtualMachine.version() のターゲット VM バージョンと情報、および VirtualMachine.description() を参照してください。

    戻り値:
    マイナーバージョン番号を表す整数

    Java Debug Interface