aqubi+shin1

Recent site activity

eclipse‎ > ‎

eclipseからリモートデバッグ

デバッグ対象の起動スクリプト

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のデバッグ実行の構成

  1. メニューのDebug Configrations...を開く。
  2. 新規にRemote Java Applicationを追加する。
    1. ソースを含んだプロジェクトを選択する。
    2. デバッグ対象のホスト名を設定する。
    3. デバッグ対象のポート番号を設定する(スクリプトで設定したもの)。
  3. 接続の完了時にすぐわかるよう、デバッグ対象のソースの先頭の方にブレークポイントをひとつおいて置くと便利かもしれない。
構成のファイルは以下のようなカンジになる。
<?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>

デバッグ方法

  1. まずはスクリプトでデバッグ対象を起動する。
    • JWSの場合はスクリプトが終了してしまうように見えるが、気にしない。
    • JWSの時は、タスクマネージャで確認していると、javaw.exeのインスタンスが増えるので目で確認できるかも。
  2. eclipseで作成したリモートデバッグを起動する。
    1. 接続が完了して、デバッグポイントに差し掛かったら接続成功。
    2. JWSの時は、タスクマネージャで確認していると、接続が完了した直後からjavaw.exeのインスタンスのメモリ使用量が増えるから目で確認できるかも。