[RSS]

実行中のアプリケーションに NetBeans デバッガを接続するにはどうしたらいいですか?

アプリケーションにデバッガを接続できるためには、JVM はデバッグモードで実行されていなければなりません。また、アプリケーションは javac に -g オプションを指定してコンパイルされているべきです。

必要なオプション

必要なオプションは二つあり、別な JVMが接続しデバッグできるように、Java プログラムに渡されなければなりません。

-Xdebug
-Xrunjdwp:<JDWP sub-options>

ここで、JDWP sub-options はコンマで分離された属性です。例:

-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n
  • transport はデバッガとデバッグされる仮想機械の間の通信方法です。
  • address 接続を確立するとき、接続の終端点を識別するためにトランスポートアドレスが使われます。
  • server server 属性が 'y' であれば、アプリケーションはデバッガの接続を待機します。さもなければ、指定されたアドレスのデバッガに接続します。
  • suspend suspend が 'n' であれば、アプリケーションは即座に開始し、デバッガが接続するのを待ちません。'y' であれば、あなたが接続するまで、アプリケーションは中断します。

オプションの完全な文書は JPDA Connection and Invocation Details 文書に記述されています。

古い JDK (JDK 5 より前) を使用する場合、-Xnoagent -Djava.compiler=NONE も渡す必要があるかもしれません。

dt_socket トランスポートを使用するとき、address 属性はポート番号を指定します。 MS Windows では、アプリケーションとデバッガが同じコンピュータ上で実行している場合は、dt_shmem トランスポートはより早い共有メモリ通信用に使えます。address は共有メモリ領域の名前を指定します。

NetBeans からアプリケーションに接続

  1. メインメニューから 実行 > デバッガを接続... を選びます。
    (ダイアログが現れます)
  2. コンボボックスで JPDA Debugger が確実に選択されているようにします。
  3. 適切な接続の種類を選びます (transport サブオプションの値にあうように)。
  4. 他のオプションの値を入力します:
    • " dt_socket " トランスポートを使用する場合:
      Host フィールドにデバッグされるアプリケーションが実行されるコンピュータのホスト名を入力します (同じコンピュータ上ならば "localhost" も可)。
      Port フィールドに選択されたポート番号を入力します。
    • " dt_shmem " トランスポートを使用する場合 (MS Windows のみ):
      共有メモリ名を入力します (例 "myapp")。
  5. 了解 ボタンを押します

バージョン: NetBeans 5.0, 5.5

プラットフォーム: すべて

---