Java アプリケーションのデバッグ

Java™ プログラムをデバッグするには、Java Debugger (JDB) アプリケーション、またはオペレーティング・システム用の SDK によって提供される Java Platform Debugger Architecture (JPDA) を使用して通信する他のデバッガーを使用できます。

Java を使用した問題診断については、 トラブルシューティングおよびサポートを参照してください。

注: AIX® システムでは、 SDK に AIX デバッガー用のプラグイン DBX が含まれています。 DBX プラグインは SDK の一部として提供されますが、サポートはされていません。 ただし、 IBM® はバグ・レポートを受け入れます。

Java Debugger

JDB は SDKに含まれています。 このデバッガーは、 jdb コマンドで開始され、JPDA を使用して JVM に接続します。

Java アプリケーションをデバッグするには:
  1. JVM を以下のオプションを付けて開始します。
    • Windows システムの場合:
      java -agentlib:jdwp=transport=dt_shmem,server=y,address=<port> <class>
    • その他のシステムの場合:
      java -agentlib:jdwp=transport=dt_socket,server=y,address=<port> <class>

    JVM は開始しますが、Java アプリケーションを開始する前に実行を中断します。

  2. 別のセッションで、デバッガーを JVM に接続できます。
    jdb -attach <port>
    デバッガーが JVM に接続し、Java アプリケーションを検査および制御するための一連のコマンドを発行できるようになりました。例えば、 run と入力すると、Java アプリケーションを開始できます。
リモート・ワークステーションで実行されている Java アプリケーションをデバッグするには、以下の手順
JPDA は、TCP/IP ソケットを使用してリモート JVM に接続します。
  1. JVM を以下のオプションを付けて開始します。
    • Windows システムの場合:
      java -agentlib:jdwp=transport=dt_shmem,server=y,address=<port> <class>
    • その他のシステムの場合:
      java -agentlib:jdwp=transport=dt_socket,server=y,address=<port> <class>

    JVM は開始しますが、Java アプリケーションを開始する前に実行を中断します。

  2. デバッガーをリモート JVM に接続させます。
    • Windows システムの場合:
      jdb -connect com.sun.jdi.SocketAttach:hostname=<host>,port=<port>
    • その他のシステムの場合:
      jdb -attach <host>:<port>
詳しくは、以下を参照してください。
  • JDB オプションについて詳しく調べるには、jdb -help と入力します。
  • JDB コマンドについて詳しく調べるには、次のようにします。
    1. タイプjdb
    2. jdb プロンプトで、 help と入力します。
  • JDB および JPDA とそれらの使用法について詳しくは、以下を参照してください。