デバッグ対象の起動スクリプトtomcatの起動スクリプトtomcatの起動時のJVMへのオプションに以下を追加する。
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8119
JWSの起動スクリプト以下のようなスクリプトを用意する。環境変数等は適宜変更すること。 @echo off
set JAVA_HOME=C:\Program Files\java\jdk1.5.0_07 set JRE_HOME=%JAVA_HOME%\jre\
set JNLP_URL=http://localhost:8080/myjws.jnlp set DEBUG_PORT=8118
set JNLPX_HOME=%JRE_HOME%\bin set JNLPX_JVM=%JNLPX_HOME%\javaw.exe set JNLPX_HEAPSIZE=NULL,NULL set
JNLPX_VMARGS=-classic -Xdebug -Dnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=%DEBUG_PORT% set CLASSPATH=%JRE_HOME%\lib\rt.jar;%JRE_HOME%\lib\javaws.jar;%JRE_HOME%\lib\deploy.jar
@echo on "%JAVA_HOME%\bin\java.exe"
"-Djnlpx.home=%JNLPX_HOME%" "-Djnlpx.jvm=%JNLPX_JVM%"
"-Djnlpx.heapsize=%JNLPX_HEAPSIZE%" "-Djnlpx.vmargs=%JNLPX_VMARGS%"
"-Xverify:remote"
"-Djava.security.policy=file:%JAVA_HOME%\lib\security\javaws.policy"
"-DtrustProxy=true" com.sun.javaws.Main %JNLP_URL%
pause
eclipseのデバッグ実行の構成- メニューのDebug Configrations...を開く。
- 新規にRemote Java Applicationを追加する。
- ソースを含んだプロジェクトを選択する。
- デバッグ対象のホスト名を設定する。
- デバッグ対象のポート番号を設定する(スクリプトで設定したもの)。
- 接続の完了時にすぐわかるよう、デバッグ対象のソースの先頭の方にブレークポイントをひとつおいて置くと便利かもしれない。
構成のファイルは以下のようなカンジになる。 <?xml version="1.0" encoding="UTF-8"?> <launchConfiguration type="org.eclipse.jdt.launching.remoteJavaApplication"> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listEntry value="/myproject"/> </listAttribute> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listEntry value="4"/> </listAttribute> <listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> </listAttribute> <booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="false"/> <mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP"> <mapEntry key="port" value="8118"/> <mapEntry key="hostname" value="localhost"/> </mapAttribute> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="myproject"/> <stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID" value="org.eclipse.jdt.launching.socketAttachConnector"/> </launchConfiguration>
デバッグ方法- まずはスクリプトでデバッグ対象を起動する。
- JWSの場合はスクリプトが終了してしまうように見えるが、気にしない。
- JWSの時は、タスクマネージャで確認していると、javaw.exeのインスタンスが増えるので目で確認できるかも。
- eclipseで作成したリモートデバッグを起動する。
- 接続が完了して、デバッグポイントに差し掛かったら接続成功。
- JWSの時は、タスクマネージャで確認していると、接続が完了した直後からjavaw.exeのインスタンスのメモリ使用量が増えるから目で確認できるかも。
|