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で新しい設定を選択して[デバッグ]をクリックします。
IntelliJはJVMに接続してリモートデバッグを開始します。
必要に応じてコードにブレークポイントを追加してアプリケーションをデバッグできます。アプリケーションの出力は以前と同じ場所に表示されますが、ブレークポイントはIntelliJに表示されます。
可能ですが、アプリケーションを起動するときにJVMフラグをいくつか追加する必要があります。
リモートデバッグ設定を追加する必要があります。設定の編集 - >リモート。
そうすると、表示されたダイアログウィンドウに、プログラムの実行に追加しなければならないパラメータが見つかります。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
その後、アプリケーションを起動したら、デバッガをアタッチできます。デバッガが接続されるまでアプリケーションを待機させたい場合は、suspend flagをyに変更してください(suspend=y
)
また、デバッグモードで接続したい場合は、アプリのJava_OPTSに "-Xdebug"フラグを追加する必要があることを忘れないでください。
また、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