286

Linux マシンで Java アプリケーションを実行しています。以下を使用して Java アプリケーションを実行します。

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

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

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

4

7 に答える 7

510

編集:ここで呼び出しをカット アンド ペーストしている人がいることに気付きました。私が最初に出した答えは、OPのみに関連していました。以下は、より現代的な呼び出しスタイルです (従来の 8000 ポートの使用を含む):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

元の答えは次のとおりです。


これを試して:

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

ここで 2 つのポイント:

  1. runjdwpオプションにスペースはありません。
  2. オプションはクラス名の前に来ます。クラス名の後にある引数はすべて、プログラムへの引数です!
于 2009-06-10T12:47:23.923 に答える
87

JDK 1.3 以前の場合:

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

JDK1.4の場合

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

新しい JDK の場合:

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

必要に応じてポート番号を変更してください。

Java 技術情報から

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

JVM Tool インターフェイスのドキュメントから、もう 1 つ注意すべき点があります。

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

于 2014-03-25T10:12:40.037 に答える
13

引数の順序が重要であることを強調したいと思います。

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar app.jarコマンドは、デバッガー ポートを開きます。

しかし、java -jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000コマンドはそうではありませんapp.jarの後のすべてをコマンドライン引数として渡します。

于 2019-09-08T14:18:02.893 に答える
3

これは、リモート デバッグ用に Eclipse デバッガーをセットアップする方法です。

日食の設定:

1.実行ボタンをクリックします 2.
デバッグ構成
を選択します 3.「リモート Java アプリケーション」を選択します<br> 4.新しい構成

  • 名前 : GatewayPortalProject
  • プロジェクト : GatewayPortal ポートレット
  • 接続タイプ:ソケットアタッチ
  • 接続プロパティ: i) localhost ii) 8787

JBoss の場合:

1. VM の/path/toJboss/jboss-eap-6.1/bin/standalone.confを次のように変更します。 #: を削除して、次の行のコメントを解除します。

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

Tomcat の場合:

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

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

于 2016-06-28T22:48:22.803 に答える