GrailsをIntellijからリモートデバッグする
いまだにprintfデバッグを卒業出来ません。
そんなことはどうでもよくてリモートデバッグしてみる。山本さんの
http://d.hatena.ne.jp/mottsnite/20120705/1341495778
に書いてあるとおり2.1からデバッグする際は-debugオプションを使ったほうが良いとのこと。
そもそもIntellijからデバック起動すればいいじゃんって話はあるけど、IDE上からgrailsコマンド実行するとすごい動作が遅いし、操作性もあまり良くなく、結構つらいのでコマンドラインでgrailsコマンド使いつつIntellijでリモートデバッグするという方法を試してみる。
debugオプションの使い方は以下の様な感じ。
grails -debug grails -debug run-app grails -debug test-app
インタラクティブモードでも問題ありません。注意としては-debugはgrailsの次に書くこと。
grails run-app -debug
とかだとダメ(2.1.1現在)。で実行してみると以下のようになります。
$ grails -debug Listening for transport dt_socket at address: 5005
5005で待ち受け状態になるでこの状態でIntellijからつなぐ。runメニューの "Edit Configurations..." を選択。
"+"ボタンをクリックしてremoteを選択。
適当な名前つけて保存。
runメニューから今作ったリモートを選択してdebug実行。
そうするとコンソールの方で出力が進む。
$ grails -debug Listening for transport dt_socket at address: 5005 | Enter a script name to run. Use TAB for completion: grails>
あとはIntellij側でブレイクポイントを設定して
コンソール側でrun-appなりtest-appなりすればブレイクポイントで止まってくれる!
意外と簡単!