IntelliJ CEでPlay-Scalaのデバッグ実行をちょっと面倒で地味に便利にする
Zenn初記事になります、よろしくおねがいします。
最近またScalaでお仕事してて開発環境を整備したのでメモ的に残しておきます。
IntelliJ CE版でよく見つかるやり方だとterminal/cmdプロンプト上で
sbt -jvm-debug 9999 run
してIntelliJ上でリモートデバッグするやりかたが出てきますが、これだとエラーなどが出た時にIntelliJのソースに直接飛べないなど不便があるのでCE版でも出来る限り便利なようにしていきます(有償版のIntelliJ Ultimate Editionだと標準サポートしています)
-
Playのプロジェクトをsbtで作成、IntelliJで読み込みます。
-
File-Settingsを押下して設定画面を開きます。
-
Build, Execution,Depeloyment > Build Tools > sbtを開きます。
-
sbt projects - sbt shellの設定の
Enable debugging
のチェックボックスにチェックを入れます。
-
IntelliJのRun/Debug Configurations上で「+」ボタンを押して
Remote JVM Debug
を選択します。 -
Nameに分かる名前を入れて以下の設定をします
- Debugger mode:Attach to remote JVM
- Transport:Socket
- Host: localhost
(デフォルトで上記の設定のはず)この時Port:はまだ設定しないのがポイントです。
-
IntelliJのsbt shellを起動します。
-
sbt起動時の
Listening for transport dt_socket at address: 51259
の番号をコピーします
※このアドレスはsbt起動ごとに変わります
-
sbt shellで「run」を実行してPlayを起動します。
-
先に設定したIntelliJのRun/Debug ConfigurationsのPlay用の設定の
Port:
に先程コピーしたdt_socket at address
の番号を貼り付けます。 -
設定した設定でIntelliJのDebuggerを立ち上げて、自分が止めたいところにブレークポイントを設定します。
-
ブラウザ/Restクライアントなどから
localhost:9000
の自分がデバックしたい任意のURLなど指定して実行します。
上記でsbt shell経由でリモートデバッグが出来るようになります。
sbt -jvm-debug 9999 run
してリモートでバックするのと比べるとPlay起動時に毎回port番号を指定する必要があることですが、その代わりにsbt shellの色分け、エラーなどのリンククリックでIntelliJのソースに直接遷移してくれるので実際の開発効率はかなり上がります。
これが面倒ならIntelliJ Ultimateをお買い上げ下さい(笑)
Discussion