2009-06-10 12 views
188

私はLinuxマシン上で動作するJavaアプリケーションを持っています。Javaアプリケーションのリモートデバッグ

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n 

私はこのLinuxマシンでTCPのポート4000を開いています。私はWindows XPマシンからEclipseを使用し、このアプリケーションに接続しようとします。私は窓を開けた。

両方のマシンがLAN上にありますが、デバッガをJavaアプリケーションに接続できないようです。私は間違って何をしていますか?

+0

あなたはどのようなエラーを取得していますか? – Glen

+0

https://stackoverflow.com/a/46171836/1619407 –

答えて

387

編集:私は、一部の人々がここで呼び出しをカットアンドペーストしていることに気付きました。私が最初に与えた答えは、OPだけに関連していました。より現代的な呼び出し形式(より一般的な8000ポートを使用することを含む)があります。

オリジナルの回答は次のとおりです。


このお試しください:ここ

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp 

2点:

  1. runjdwpオプションにスペースを。
  2. オプションはクラス名の前にあります。クラス名の後ろにある引数は、プログラムの引数です!
+5

[公式JDPA接続と呼び出しドキュメント](http://docs.oracle.com/javase/8/docs/technotes/guides/jpda/conninv.html#呼び出し) –

+2

@DJGummikuh Nice!私は最新のスタイルの '-agentlib'オプションをあなたのカットアンドペーストの喜びに使うようにポストを更新しました。 :-) –

+0

リモートデバッグを行うマシンには、リモートアプリケーション用のソースコードが常に必要ですか? – testerjoe2

26

ステップ:

    上記の記事で言ったようにデバッグオプションを使用してリモートJavaアプリケーションを起動し
  1. ホストとポートを指定してリモートデバッグ用にEclipseを設定します。
  2. Eclipseでリモートデバッグを開始し、接続が成功するのを待ちます。
  3. ブレークポイントとデバッグを設定します。
  4. アプリケーションの開始からデバッグする場合は、suspend = yを使用します。これにより、eclipseから接続するまでリモートアプリケーションが停止されます。

詳しくはStep by Step guide on Java remote debuggingを参照してください。 JDK 1.3またはそれ以前のバージョンについては

65

:新しいJDKの場合

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006 
JDK 1.4の場合

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

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

ニーズに基づいてポート番号を変更してください。 5からjava technotes

から

。0以降-agentlib:jdwpオプションを使用して、JDWPエージェントに オプションをロードして指定します。 5.0より前のリリースでは、-Xdebugと -Xrunjdwpオプションが使用されています(5.0実装では-Xdebugと-Xrunjdwpオプションもサポートされていますが、5.0のJDWPエージェントはJVM TIインターフェイスを使用するので新しい-agentlib:jdwpオプションが好ましい) VMではなく、古いJVMDIインタフェース)

JVM Tool interface documentationから、注意すべきもう一つ:

は、JVM TIは、JDK 5.0で導入されました。 JVM TIは、JDK 6の時点では提供されていないJava Virtual Machine Profiler Interface(JVMPI)およびJava Virtual Machine Debug Interface(JVMDI)を置き換えます。

Eclipseの設定:

1.Clickデバッグ構成
3 2.Select Runボタン
これは、あなたがリモートデバッグのセットアップEclipseのデバッガべきかである

+0

次はEclipseのデフォルト設定で動作します。 -agentlib:jdwp = transport = dt_socket、server = y、address = 8000 – Sundae

0

。「リモートJavaアプリケーション」を選択してください
4.新しい設定

  • 名:GatewayPortalProject
  • プロジェクト:GatewayPortalポートレット
  • 接続タイプ:ソケットに取り付け
  • 接続のプロパティ: i)はJBossのはlocalhost II)8787

1.Change theあなたのVM内210は、次のように: コメントを解除次の行を#削除することによって:

ステップ1:ファイルはcatalina.bat

:Tomcatの

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n" 

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 

次に、あなたがデバッグに望むJavaクラスにブレークポイントを設定する必要があります。

-3

デバッグの最適なオプションは、ログを作成してログを分析することです。しかし、場合によっては、サーバーにデプロイされたWebアプリケーションをデバッグする必要があります。

Remotely debug a java web applicationリンクを参照してください。ここでは、リモートデバッグの完全な流れについて説明します。それが助けてくれることを願って。

+1

真剣に? 1つのリクエストフローを分析するために、すべてのリクエストのログを有効にして展開し、GBのログを通過させますか? –

+0

私はあなたに春のMVCアプリケーションをデバッグする代わりの方法を提供しました。そして、yesのログはリモートアプリケーションをデバッグする最良の方法です。あなたは私が将来それを使用することができるように親切にも私に知らせるより良い選択肢があれば... –

関連する問題