IntelliJ IDEAデバッガーを実行中のJavaプロセスに接続することは可能ですか?はいの場合、どうやって?
IntelliJ IDEAデバッガーを実行中のJavaプロセスに接続することは可能ですか?はいの場合、どうやって?
回答:
はい!設定方法は次のとおりです。
リモート実行構成を作成します。
上記の構成は、3つの読み取り専用フィールドを提供します。これらは、アプリケーションの実行時にリモートデバッグ用にポート5005を開くようにJVMに指示するオプションです。デバッグしているアプリケーションのJVMオプションに適切なものを追加します。これを行う1つの方法は次のようになります。
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
ただし、アプリケーションの実行方法によって異なります。3つのうちどれに当てはまるかわからない場合は、最初のリストから始めて、機能するリストが見つかるまでリストを下に移動してください。
に変更suspend=n
しsuspend=y
て、アプリケーションが起動する前にIntelliJに接続するまで強制的に待機させることができます。これは、ヒットしたいブレークポイントがアプリケーションの起動時に発生する場合に役立ちます。
通常どおりにアプリケーションを起動し、IntelliJで新しい構成を選択して[デバッグ]をクリックします。
IntelliJはJVMに接続し、リモートデバッグを開始します。
これで、必要に応じてコードにブレークポイントを追加して、アプリケーションをデバッグできます。アプリケーションの出力は以前と同じように表示されますが、ブレークポイントはIntelliJでヒットします。
Remote
コミュニティ版では利用できませんか?有料版を利用しています。コミュニティ版を持っている人は誰でも確認できますか?
System.out.println
リモートデバッグ時にIntelliJ からの出力を取得する方法を知っていますか?
可能ですが、アプリケーションを起動するときに、JVMフラグをいくつか追加する必要があります。
リモートデバッグ構成を追加する必要があります:構成の編集->リモート。
次に、表示されたダイアログウィンドウのパラメーターで、プログラムの実行に追加する必要があるパラメーターを見つけます。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
その後、アプリケーションが起動したら、デバッガーをアタッチできます。デバッガーが接続されるまでアプリケーションを待機させる場合は、suspendフラグをy(suspend=y
)に変更します。
また、Tomcat GUIアプリを使用しています(私の場合:C:\ tomcat \ bin \ Tomcat9w.bin)。
Javaタブに移動します。
たとえば、Javaプロパティを設定します。
Java仮想マシン
C:\ Program Files \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll
Java仮想マシン
C:\ tomcat \ bin \ bootstrap.jar; C:\ tomcat \ bin \ tomcat-juli.jar
Javaオプション:
-Dcatalina.home = C:\ tomcat
-Dcatalina.base = C:\ tomcat
-Djava.io.tmpdir = C:\ tomcat \ temp
-Djava.util.logging.config.file = C:\ tomcat \ conf \ logging.properties
-agentlib:jdwp = transport = dt_socket、server = y、suspend = n、address = *:8000
Java 9オプション:
--add-opens = java.base / java.lang = ALL-UNNAMED
--add-opens = java.base / java.io = ALL-UNNAMED
--add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED