IntelliJで仮想環境のsbtに接続してデバッグする方法
まとめ
sbt起動オプションに 0.0.0.0:をつけて、InttelJのEdit Configurations でremote指定
sbt -jvm-debug 0.0.0.0:5005
内容
リモートのデバッグ設定自体は、$shibayu36->blog; とかでできるのだけど、仮想環境で立ち上げたsbtにアタッチしようとすると "Connection refused"になり接続できない。
切り分け
- jdbコマンドで色々試した
- ゲストOSでsbt 起動
$ sbt -jvm-debug 5005
ゲストOSの別ターミナルでアタッチ
これはOK
$ jdb -attach 5005
これもOK
$ jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=5005
ホストOSのターミナルでアタッチ
- Connection refusedで失敗
$ jdb -connect com.sun.jdi.SocketAttach:hostname=192.168.1.2,port=5005
ゲストOSでIPアドレスを指定
- Connection refusedで失敗
$ jdb -connect com.sun.jdi.SocketAttach:hostname=192.168.1.2,port=5005
解決
- localhostからの接続しか受け付けないようなのでそれを調査
- LISTENポートを調査
$ netstat -l | grep 5005
tcp 0 0 localhost:5005 0.0.0.0:* LISTEN
対応方法
- sbt起動時のオプション変更
sbt -jvm-debug 0.0.0.0:5005
成功!
> $ jdb -connect com.sun.jdi.SocketAttach:hostname=192.168.1.2,port=5005