素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

投稿日: 2018年12月4日
最終更新日:

【Dockerでも可能】IntelliJ IDEでSpringBootのリモートデバッグ(remote debug)を使ってみよう【開発スピードアップ】

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

Anker PowerCor

created by Rinker
Anker
¥4,990 (2024/03/15 15:06:44時点 Amazon調べ-詳細)

旅行には必須の大容量モバイルバッテリー!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,080 (2024/03/15 19:03:47時点 Amazon調べ-詳細)

翼を授けよう!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/03/15 19:03:48時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥13,861 (2024/03/15 15:06:46時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

created by Rinker
MOFT
¥2,880 (2024/03/15 19:06:03時点 Amazon調べ-詳細)

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

リモートデバッグがしたい

IDEのデバッガーは優秀

SpringBootを使って開発する際は、EclipseやIntelliJなどのIDEを使うのが定番になってきています。

IDEには優秀なデバッガー機能がついているので、ローカル環境で開発をする際には欠かせない機能となっています。

デバッガーが使えない場合の対処方法

しかし、Dockerなどを使って仮想的な開発環境を作って開発をしている場合、ホスト側のIDEのデバッガーが使えずにとても苦労する場合があります。

そんな時は、SpringBootのリモートデバッグ機能を使えばホストとコンテナで環境が分かれている場合でもIDEのデバッガーを使うことが出来ます。

手順

前提

今回はGradleプロジェクトをIntelliJで読み込んでいることを前提としてます。

ブレイクポイントの設置

まずは、IntelliJ側デバッグポイントをマーキングしましょう。
エディターの行番号の右をクリックすると赤いマーカーがつきます。

今回はリモートデバッグを行いたいので、IntelliJからの起動ではなく以下のコマンドで起動します。

もちろん、この状態ではデバッグに引っかかる事なく起動が完了してしまいます。

RemoteConfigの作成

では、IntelliJ側にリモートデバッグを検知するための設定を作成しましょう。

ツールバーのRunからEdit Configurationsを選択します。

次に、左上の+マークをクリックしてRemoteを選択します。

すると、設定ダイアログが表示されるので、Nameに任意の名称を入れ、その他はデフォルトのままOKボタンをクリックします。

これでIntelliJ側の設定は完了です。

起動コマンドにオプションを追加

次に起動する際のコマンドに--debug-jvmオプションを加えて起動してみてください。

すると、以下のようにListening状態になります。

これは、5005ポートデバッグ先を探している状態になります。
このログが表示されたらIntelliJ側で先ほど作成したRemoteで起動してみましょう。

すると、以下のようなログがIntelliJ側で出力されます。

bootrun側も正常に起動が始まります。

そして、IntelliJ側のデバッグポイントに引っかかるようになりました!!

もちろん、引数が存在していれば中身を確認することも出来ます。
試してみましょう。

build.gradleに以下を追記して、

以下のコマンドで再度起動してみましょう。

正しく変数内の値も参照出来ますね。

終わりに

システム開発をする際に、デバッグが出来るか出来ないかで大きく開発スピードが変わってきます。

毎回ログに出して確認する方法だと、他の変数の値を確認したくなった場合に都度loggerの仕込みをする必要があったり、loggerの消し忘れなどの懸念があるので、なるべくデバッガーを使うようにしてみましょう。

CATEGORIES & TAGS

IT