最終的に結構簡単な設定で出来たのだけど、いろんな情報に右往左往させられてしまったので、自分用にメモをとっておく。
やりたいこと
Scalaで開発する時、基本的にターミナルでsbtを起動して、runとかtestとかを実行している。その時、挙動を動かしながら確認するために、ステップ実行を行いたい時がある。
作戦
ターミナルで、sbtをJVMのデバッグオプション付きで立ち上げて、そのプロセスにIntelliJのデバッガでアタッチするという方法を取る。
IntelliJの標準のScala開発環境で、「Enable debbuging for SBT shell」という設定もあるのだけど、これがなかなかうまく動かなかった。そこでこちらのやり方は諦めて、上記した方法を取ることにした。
やり方
sbtをJVMのデバッグオプション付きで立ち上げる
まずsbtをJVMのデバッグオプション付きで立ち上げる。最近のsbtではデフォルトでこのオプションが付いている。
$ sbt -jvm-debug 5005 Listening for transport dt_socket at address: 5005
ここで指定した5005がIntelliJのデバッガに設定すべきポート番号となる。このポート番号は自分で自由に変えても良い。
IntelliJのデバッガの設定を行う
まず「Select Run/Debug Configuration」から「Edit Configurations」に。
プラスボタンからRemoteを選択。
先程立ち上げたsbtのポートが指定されているか確認し、OKを押す。
これで設定は終わり。