Eclipseを使用したTomcatのリモートデバッグ


95

Eclipseを介してtomcatアプリケーションをデバッグできないようです。設定しました

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

その後、私は実行bin/catalina.sh私はそれのリスニングを言っ出力を参照してください場合は、dt_socketport 8000。しかし8000、Eclipseのポートに接続しようとするたびに(リモートJavaアプリケーションメニューにエントリを追加することにより)、接続が拒否されたというメッセージが表示されます。何か案は?


Eclipseで使用されているリモート構成を投稿してください。
ショーン・

回答:


133

これが機能するかどうかを確認できますか?

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

catalina.sh jpda start

4
実際、あなたが修正しました。Eclipseは、接続に成功しても実際には何も言わず、2回目に再接続するとエラーが発生します。動作していましたが、気付かなかっただけです。
ビクター

18
これは、Windows OSのものです:set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n catalina.bat jpda start
リー・チーKiam

1
suspend = nオプションは何をしますか?
Trismegistos 2013年

2
@Trismegistos。suspendjvmがデバッガーを待つか、続行するかを指定します。このドキュメントを参照してください。
Raghuram

9
実際にcatalina.sh jpda startは十分なはずです。catalina.shには、JPDA_*ポートの変更などに使用できるいくつかのパラメーターがあります。ドキュメントのファイルを参照してください。
zpon 2014

53

私はこれに少し時間をかけて正しい情報を得ました。

だからここに詳細な情報がステップバイステップです。

環境:Windows 7

TomCatバージョン:7.0

IDE:Eclipse

tomcatでリモートデバッグを有効にするために追加される構成は

-Xdebug
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

上記の非Windows環境の構成はお勧めしません。上記の設定を追加するには、サーバービューで使用できるtomcatサーバーをダブルクリックします。以下のスクリーンショットを見つけてください。 ここに画像の説明を入力してください

次に、上記のランタイム環境構成をtomcatに追加します。スクリーンショットの下のこのチェックのため。

ここに画像の説明を入力してください

次のスクリーンショットに示すように、起動構成プロパティの編集の[Arugments]タブに移動しました。

ここに画像の説明を入力してください

GoTo VM引数セクションにこれらの行を追加します。

-Xdebug

-agentlib:jdwp = transport = dt_socket、address = 8000、server = y、suspend = n

ここに画像の説明を入力してください

Eclipseツールバーで利用可能なデバッグボタンが用意されました。

ここに画像の説明を入力してください

デバッグ構成で「リモートJavaアプリケーション」を見つけてダブルクリックします。ここに画像の説明を入力してください

[名前]フィールドに、任意の名前を入力します。

参照ボタンを使用してプロジェクトフィールドから、リモートデバッグを実行するプロジェクトを選択します。

ホスト名はホストアドレスにすぎません。ここではローカルで作業しているため、「localhost」です。

最後の[ポート]列の値は8000にする必要があります。[名前]および[プロジェクト]テキストフィールド以外の2つの列[ホスト]および[ポート]は、上記と同じ値にならない場合、Eclipse自体によって入力されます。詳細はスクリーンショットを確認してください。ここに画像の説明を入力してください

サーバーコンソールでTomcatServerを右クリックし、コンテキストメニューから[追加]と[削除]を選択します。このダイアログから、プロジェクトをサーバーに追加できます。

ここで、Tomcatサーバーを実行します。

ここに画像の説明を入力してください

次に、Debug ToolからTomCatDebugConfigurationを実行します。

最後に内部または外部ブラウザーを開いてプロジェクトを実行します。実行コントロールがブレークポイントに達した場合、Eclipseはデバッグパースペクティブを要求します。


47

catalina.batまたは.shが見つかったtomcat binディレクトリ(別名{CATALINA_BASE} / bin)で、編集します(そこにない場合は作成します)。

setenv.bat/.sh

次の行を追加します。

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

それだけで、catalina.bat(または.sh)ファイルを編集する必要はありません。

catalina.batまたはのコメントを参照してくださいcatalina.sh

特定の環境/状況に合わせて構文を調整する必要がある場合があります。たとえば、CATALINA_OPTSがすでに定義されている場合は、次のようにすることができます(Windows環境)。

set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n

Eclipseからデバッグするには:

実行->デバッグ構成...->リモートJavaアプリケーション->新規

名前、デバッグするプロジェクト、および上記で指定したTomcatホストとデバッグポートを指定します。


これは機能しています。tomcat/ binディレクトリにあるsetenv.shでこのCATALINA_OPTSを設定する必要があります。ありがとう。
2015

1
私のsetenv.batではJAVA_OPTS(tomcat 7)
vikingsteve

こんにちはフィリップ、助けにならないかもしれないメモをいくつか追加しました:使用しているos、tomcat、eclipseのバージョンは?
karl

setenv.bat でのbinディレクトリのような行を入れてset JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n使用し、startup.batTomcatの起動に
ParamvirシンKarwal

33

catalina.batファイルの下を変更してください。

  • ステップ1: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

  • ステップ2: JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

  • 手順3:以下のようにコマンドプロンプトからTomcatを実行します。 catalina.sh jpda start

  • ステップ4:次に、Eclipseでデバッグ構成を作成する

    1. 構成に任意の名前を付けます。
    2. を与えるproject name
    3. 接続タイプを次のように指定します Standard(Socket Attach)
    4. ホストとして localhost
    5. ポート8000(またはポート番号が、それはまた、他の場所で同じでなければなりません)。

catalina.batの次の部分でCATALINA_OPTSを見つけました。catalina.batのコンテンツをアップロードできますか?
Gopakumar NG 2013

同じことを2回書いているようです。私はあなたのステップ1をスキップしました-そしてそれはうまくいきます。CATALINA_OPTSを変更する必要がないことを確認できますか?
Henry Aloni 2013年

参照のCATALINA_OPTS&JPDA_OPTS間の差分を参照:stackoverflow.com/questions/11222365/...
マイク・R

1
このTomcatの8で動作するようにするためにはTomcatの8.では動作しません、手順1を残している
デイブ

@RAJ。Tomcat 6で完全に動作しました。ありがとうございました。
T8Z

7

上記の答えの多くは正しいですが、デフォルトではデバッガーはlocalhostのみをリッスンすることに注意してください。リモートサーバーをデバッグする場合は、リッスンするIPアドレスを指定する必要があります。次に例を示します。

JPDA_OPTS = "-agentlib:jdwp = transport = dt_socket、address = 10.1.1.33:8000、server = y、suspend = n"

catalina.sh jpda開始

現在、アドレスは10.1.1.33:8000です。

もちろん、実際に使用されているIPを確認することもできます。

netstat -an

WindowsとLinuxの両方で、find(Windows)またはgrep(Linux)を使用してポートを除外します。


どのIPでなく、どのPORTが実際に使用されているのかということだと思います。
Abdollah

1
いいえ、「IPアドレス」という意味です。(別のマシンから)リモートデバッグを行う場合は、localhostまたは127.0.0.1とは異なるIPアドレスを指定できる必要があります。もちろん、常にポート番号も必要です。
DAB

5

./catalina.sh jpda start(fork)または./catalina.sh jpda run(forkしない、ヘルプに記載されていない)を実行するだけです。ここで説明するすべてのオプションは、デフォルトで正しい値に設定されています。


5

Eclipseを使用してTomcat7でリモートデバッグモードを有効にする簡単な方法(Windows)を共有しましょう。

ステップ1:bin / startup.batファイルを開く
ステップ2:JDPAオプションを使用してデバッグするために以下の行を追加します(ファイルの開始行である必要があります)

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

手順3:同じファイルで..ファイルの最後に移動し、この行を変更します-

    call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%  
    instead of line  
    call "%EXECUTABLE%" start %CMD_LINE_ARGS%  

ステップ4:次に、bin> startup.batを実行します(これで、Tomcatサーバーはリモートモードでポート8000​​で実行されました)。

ステップ5:その後、Eclipseクライアントとリモートクライアントでソースプロジェクトを接続します。

ステップ6:Eclipse IDEで「デバッグ構成」に移動します

step7:「リモートJavaアプリケーション」をクリックし、「新規」をクリックします

ステップ8。「接続」タブでパラメータ値を設定します

   project= your source project  
   connection Type: standard (socket attached)   
   host: localhost  
   port:8000  

ステップ9:[適用してデバッグ]をクリックします。

最後に、Eclipseリモートクライアントが実行中のTomcatサーバーに接続されます(デバッグモード)。

このアプローチがあなたに役立つことを願っています。

よろしく


4

追加するためにcatalina.batを修正します

set JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n" 

そして

CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

オプション:startup.batの実行時にデフォルトでデバッグモードを実行するには、以下の行を追加します

call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

EclipseまたはSTSでデバッグ構成を選択して右クリック->新規

connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address

この情報はWINDOWSを対象としていますが、たまたまWindowsを使用していたため、役に立ちました。ありがとう!
着信

2

それでも上記のすべてが機能しない場合は、いつでもスクリプトに追加できます

    set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

2

tomcat 7では、catalina.shに次のコードがあります。

if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="8000"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
  shift
fi

Iiは、以下を使用してJPDAをセットアップできることを意味します。

export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n

または:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

そして最後に使用します:

catalina.sh jpda start

よろしく


Tomcat 8:JPDA_変数は、「エクスポート」する必要なく、setenv.shで設定できます。いずれの場合も、起動呼び出しの最初のパラメーターは「jpda」でなければなりません。Tomcatをサービスとして開始する場合は、$ {CATALINA_HOME} /bin/startup.shスクリプトを変更して、 'start'の前の最後の行に 'jpda'パラメータを追加することをお勧めします:´´exec "$ PRGDIR" / "$ EXECUTABLE "jpda start" $ @ "´´。
Heri

1

Dockerコンテナー内でTomcatを実行しているときにこの問題に直面していました。これを修正するには、docker runコマンドに「-p 8000:8000」引数を追加して、このポートをローカルマシンに公開するようにしてください。もちろん、コンテナー内の$ {CATALINA_HOME} / bin /にあるsetenv.shファイルも必要です。


0

CATALINA_OPTSおよびJPDA_OPTSを使用してstartup.batを変更しても機能しませんでしたが、catalina.batに追加すると、

  1. catalina.batを変更する

CATALINA_OPTS = "-Xdebug -Xrunjdwp:transport = dt_socket、address = 8000、server = y、suspend = n"

JPDA_OPTS = "-agentlib:jdwp = transport = dt_socket、address = 8000、server = y、suspend = n"

  1. startup.batを変更してjpdaを含める

「%EXECUTABLE%」の呼び出しを%CMD_LINE_ARGS%の開始に変更

"%EXECUTABLE%" jpda start%CMD_LINE_ARGS%を呼び出します

次に、Eclipseのデバッグ構成でリモートJavaアプリケーションを構成します。


0

まず、テキストエディターでcatalina.batを開くと、「このスクリプトで変数を設定しないでください...」というメッセージが表示されるので、そのスクリプトでは絶対に変更しないでください。代わりに、以下の手順を実行できます。

  1. 「setenv.bat」という名前の新しいbatファイルを作成することをお勧めします。
  2. 次に、そのbatファイルに次のような2つの変数を設定します。

    set CATALINA_OPTS = "-Xdebug -Xrunjdwp:transport = dt_socket、address = 8000、server = y、suspend = n"

    JPDA_OPTS = "-agentlib:jdwp = transport = dt_socket、address = 8000、server = y、suspend = n"を設定します

  3. 最後にそれをcmd thatで実行します: "catalina.bat jpda start"

  4. IDEで、リモートデバッグ構成を作成し、ホストを関連サーバーのIPに設定し、ポートを8000に設定します。


0

apache-tomcat-8.5.28バージョンの場合、これを行うだけです。

catalina.bat jpda start

catalina.batですでに構成されているデフォルト設定として

そうでない場合 "%JPDA_OPTS%" == "" goto gotJpdaOpts set JPDA_OPTS = -agentlib:jdwp = transport =%JPDA_TRANSPORT%、address =%JPDA_ADDRESS%、server = y、suspend =%JPDA_SUSPEND%

したがって、他の構成は必要ありません。コマンドcatalina.bat jpda startを実行すると、デバッグポート8000​​が開いていることがわかります。



-2

apache-tomcat-8.5.28の場合

JDPA_OPTS以下のように変更して、次のように実行しますcatalina.bat jpda start

JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.