はじめに
以前の記事でマルチプロジェクト構成のSpringBootアプリを作成しました。
この時、IntelliJでのデバック実行ではなく、GradleのbootRunでアプリを立ち上げていた為、
これまでのようなデバッグを出来るようにリモートデバッグを試してみました。
環境
Java:17
SpringBoot:3.1.1
Gradle:8.1.1
IntelliJ:IntelliJ IDEA 2022.3 (Community Edition)
プロジェクト:multi-project(以前の記事のプロジェクト)
1.デバッガーを設定
IntelliJの実行構成で「リモート JVMデバッグ」指定し、デバッガーを設定します。
設定詳細は、下図のように設定します。
設定のポイント
基本的に初期設定そのままです。
ホスト:
デバッグするアプリを実行しているホストを指定します。
今回はローカルでSpringBootアプリを実行するので「localhost」に設定します。
ポート:
デバッグするアプリが受信デバッガー接続を受け入れるポート番号
特に理由なければ、デフォルトの「5005」を指定します。
使用するモジュールのクラスパス:
デバッグ時に使用するクラスパスを指定します。
今回はマルチプロジェクト構成なので、ルートプロジェクトである「multi-project」を指定します。
2.SpringBootアプリを実行
デバッガーを設定したら、デバッグするアプリを起動してみます。
オプションで「--debug-jvm」指定して、bootRunを実行します。
% ./gradlew :multi-project-A:bootRun --debug-jvm
> Task :multi-project-A:bootRun
Listening for transport dt_socket at address: 5005
<==========---> 80% EXECUTING [12s]
> :multi-project-A:bootRun
アプリが起動すると、「Listening for transport dt_socket at address: 5005」と出力されます。
これでデバッグエージェントが有効になり、アプリが受信デバッガーとの接続可能になっています。
※デバッガー側で設定したポート番号と一致していること
3.デバッガーを起動
次にデバッガーを起動します。
実行構成から作成したデバッガーを選択し、デバッグボタンを押下します。
デバッガーを起動し、以下のメッセージが出力されれば成功です。
ターゲット VM に接続しました。アドレス : 'localhost:5005'、トランスポート: 'ソケット'
注意
デバッガーより先にデバッグするアプリを実行してください。
アプリを実行していないと、ConnectExceptionが発生します。
デバッガーのポートを開けません (localhost:5005): java.net.ConnectException "Connection refused"
4.確認
最後にデバッグしたいポイントにブレークポイントを付け、リクエストしてみます。
ブレークポイントの箇所で処理が中断されれば成功です。
参考文献