web-dev-qa-db-ja.com

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

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

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

bin/catalina.shを実行すると、dt_socketport 8000をリッスンしているという出力が表示されます。しかし、Eclipseでポート8000に接続しようとすると(リモートJavaアプリケーションメニューにエントリを追加することにより)、接続の拒否について不平を言います。何か案は?

85
victor

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

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

catalina.sh jpda start
121
Raghuram

適切な情報を取得するためにこれに時間を費やしました。

そこで、詳細な情報をステップごとに示します。

環境:Windows 7

Tomcatバージョン:7.0

IDE:Eclipse

Tomcatでリモートデバッグを有効にするために追加する構成は次のとおりです。

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

上記の非Windows環境の構成はお勧めしません。上記の構成を追加するには、サーバービューで使用できるTomcatサーバーをダブルクリックします。以下のスクリーンショットを見つけます。 enter image description here

次に、上記のランタイム環境設定をTomcatに追加します。スクリーンショットの下のこのチェックについて。

enter image description here

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

enter image description here

GoTo VM argumentsセクションはこれらの行を追加します。

-Xdebug

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

enter image description here

これで、Eclipseツールバーでデバッグボタンが使用可能になりました。

enter image description here

デバッグ構成で「Remote Java Application」を見つけてダブルクリックします。enter image description here

[名前]フィールドに、好きな名前を入力します。

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

ホスト名はホストアドレスに他なりません。ここで私はローカルで作業しているので「localhost」です。

[ポート]列の最後の値は8000である必要があります。[名前]および[プロジェクト]テキストフィールドを除き、他の2つの列のホストとポートはEclipseと同じ値になります。スクリーンショットで情報を確認してください。enter image description here

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

次に、Tomcatサーバーを実行します。

enter image description here

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

最後に内部または外部のブラウザーを開いて、プロジェクトを実行します。実行制御がブレークポイントに達すると、Eclipseはデバッグの観点を要求します。

50
Ravi MCA

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ホストとデバッグポートを指定します。

45
karl

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(または任意のポート番号としてポート。ただし、他の場所でも同じである必要があります)。
30
RAJ

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

ステップ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 IDEでリモートクライアントに接続します。

ステップ6:Eclipse IDEで、「デバッグ構成」に進みます

step7:「remote Java application」をクリックし、その上で「New」をクリックします

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

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

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

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

このアプローチがあなたの助けになることを願っています。

よろしく..

5
Mayen

追加する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
4
shermi

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

4
atamanroman

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

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

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

よろしく

1
Marcelo Salazar

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

1
Cheen

上記の回答の多くは正しいですが、デフォルトではデバッガーはローカルホストのみでリッスンすることを覚えておいてください。 リモートサーバーをデバッグしている場合、リッスンするIPアドレスを指定する必要があります。たとえば、

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

catalina.sh jpda start

アドレスは現在10.1.1.:8000であることに注意してください

もちろん、次のコマンドを実行して、実際に使用されているIPを確認することもできます。

netstat -an

windowsとLinuxの両方で、find(Win)またはgrep(Linux)でポートを除外します。

1
DAB

まず、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で「catalina.bat jpda start」を実行します

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

0
Mustafa Kemal

Startup.batをCATALINA_OPTSおよびJPDA_OPTSで変更しても機能しませんでしたが、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

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​​が開いていることがわかります。

0
Lyju I Edwinson

Java 8およびTomcat 9で発生した問題については、この回答を参照してください。 Tomcat 9ではJavaリモートデバッグ(JPDA)が機能しません

これは@DABの警告に似ており、彼のソリューションはおそらくより安全です。

0
TikiTavi