Java Debug Wire Protocol(JDWP)は、アプリケーションやアプレットのデバッグに非常に役立ちます。
JDWPを使用してアプリケーションをデバッグするには、次の手順に従います。
コマンド行を開き、PATH
環境変数をjdk/binに設定します。ここで、jdkはJDKのインストール・ディレクトリです。
次のコマンドを使用して、デバッグするアプリケーション(この例ではTest
という名前)を実行します。
Windowsの場合:
java -Xdebug -Xrunjdwp:transport=dt_shmem,address=debug,server=y,suspend=y Test
Oracle SolarisおよびLinuxオペレーティング・システムの場合:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=y Test
Test
クラスがデバッグ・モードで起動し、アドレスdebug
(Windowsの場合)または8888
(Oracle SolarisおよびLinuxオペレーティング・システムの場合)でデバッガの接続を待機します。
コマンド行を新たに開き、次のコマンドを使用してjdb
を実行し、実行中のデバッグ・サーバーに接続します。
Windowsの場合:
jdb -attach 'debug'
Oracle SolarisおよびLinuxオペレーティング・システムの場合:
jdb -attach 8888
jdb
が初期化され、Test
に接続されると、Javaレベルのデバッグを実行できます。
ブレークポイントを設定して、アプリケーションを実行します。たとえば、Test
のmain
メソッドの先頭にブレークポイントを設定するには、次のコマンドを実行します。
stop in Test.main run
jdb
ユーティリティがそのブレークポイントに達すると、アプリケーションが実行されている環境を調べて、予想どおりに機能しているかどうかを確認できます。
(オプション) Javaレベルのデバッグとともにネイティブ・レベルのデバッグも実行するには、JDWPで実行中のJavaプロセスにネイティブ・デバッガを使って接続します。
Oracle Solarisではdbx
ユーティリティを、Linuxではgdb
ユーティリティをそれぞれ使用できます。
Windowsでは、次のように、ネイティブ・レベルのデバッグにVisual Studioを使用できます。
Visual Studioを開きます。
「デバッグ」メニューで、「プロセスにアタッチ」を選択します。JDWPで実行中のJavaプロセスを選択します。
「プロジェクト」メニューで、「設定」を選択して、「デバッグ」タブを開きます。「カテゴリ」ドロップダウン・リストで、「追加のDLL」を選択し、デバッグするネイティブDLLを追加します(例: Test.dll)。
Test.dllのソース・ファイル(1つ以上)を開き、ブレークポイントを設定します。
jdb
ウィンドウでcont
と入力します。プロセスがVisual Studioのブレークポイントに達します。
JDWPを使用してアプレットをデバッグするには、次の手順に従います。
Javaコントロール・パネルを起動し、「Java」タブを開いて、「表示」をクリックします。「Java Runtime Environment設定」ウィンドウで、必要なプラットフォームの「ランタイム・パラメータ」フィールドに次を指定します。
Windowsの場合:
Djavaplugin.trace=true -Xdebug -Xrunjdwp:transport=dt_shmem,address=debug,server=y,suspend=y
Oracle SolarisおよびLinuxオペレーティング・システムの場合:
Djavaplugin.trace=true -Xdebug -Xrunjdwp:transport=dt_shmem,address=8888,server=y,suspend=y
Webブラウザを起動してアプレットをロードすると、Java Plug-inがデバッグ・モードで起動し、アドレスdebug
(Windowsの場合)または8888
(Oracle SolarisおよびLinuxオペレーティング・システムの場合)でデバッガの接続を待機します。
コマンド行を開き、次のコマンドを使用してjdb
を実行し、実行中のデバッグ・サーバーに接続します。
Windowsの場合:
jdb -attach 'debug'
Oracle SolarisおよびLinuxオペレーティング・システムの場合:
jdb -attach 8888
jdb
が初期化され、Test
に接続されると、Javaレベルのデバッグを実行できます。
ブレークポイントを設定して、アプレットを実行します。たとえば、MyApplet
のfunc1
メソッドの先頭にブレークポイントを設定するには、次のコマンドを実行します。
stop in MyApplet.func1 run
jdb
ユーティリティがそのブレークポイントに達すると、アプリケーションが実行されている環境を調べて、予想どおりに機能しているかどうかを確認できます。