Javaプログラムをリモートでデバッグするために設定するJava_OPTS
があることを私は知っています。
彼らは何ですか、そして彼らはどういう意味ですか?
Java 5.0より前では、-Xdebug
および-Xrunjdwp
引数を使用してください。これらのオプションは、今後のバージョンでも機能しますが、JITではなくインタープリターモードで実行されるため、遅くなります。
Java 5.0から、-agentlib:jdwp
単一オプションを使うほうが良いです:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
-Xrunjdwp
またはagentlib:jdwp
引数のオプションは以下のとおりです。
transport=dt_socket
:JVMへの接続に使用される方法を意味します(ソケットは良い選択です、遠くのコンピュータをデバッグするために使用することができます)address=8000
:デバッガから接続するために公開されたTCP/IPポート、suspend=y
: 'y'の場合、デバッガがアタッチされて実行を開始するまで待つようJVMに指示します。それ以外の場合( 'n'の場合)、すぐに実行を開始します。Java 9.0以降、JDWPはデフォルトでローカル接続のみをサポートします。 http://www.Oracle.com/technetwork/Java/javase/9-notes-3745703.html#JDK-8041435
リモートデバッグの場合は、アドレスに*:
を付けてプログラムを実行する必要があります。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Java 1.5以上の場合
Java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Java 1.4の場合
Java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Java 1.3の場合:
Java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
これは単純なプログラムからの出力です。
Java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled
Java -Xdebug -Xrunjdwp:トランスポート= dt_socket、サーバー= y、アドレス= 8001、サスペンド= y -jarターゲット/ cxf-boot-simple-0.0.1-SNAPSHOT.jar
address
はデバッグを許可するポートを指定します
MavenでSpring Bootアプリをデバッグします。mvn spring-boot:run -Drun.jvmArguments = " - Xdebug -Xrunjdwp:トランスポート= dt_socket、サーバー= y、サスペンド= y、アドレス= 8001 「
-Xdebug -Xrunjdwp:トランスポート= dtソケット、サーバー= y、サスペンド= n、アドレス= PORT_NUMBER
gradle bootrun --debug-jvm
mvn spring-boot:実行-Drun.jvmArguments = " - Xdebug -Xrunjdwp:トランスポート= dt_socket、サーバー= y、サスペンド= y、アドレス= PORT_NUMBER
Mavenを使用している場合は、多くの環境問題があります。ですから、あなたがあなたのプログラムをmavenから始めたのなら、mvnDebug
の代わりにmvn
コマンドを実行し、ポート8000にデバッガを接続するだけです。それはすべての環境問題の面倒を見ます。