Go + Revel + Intellijでのデバック方法


設定がややこしくてTry and errorでようやくできたのでメモ

環境

macOS High Sierra バージョン10.13.6
GO 1.12
revel 0.21.1
Intellij

参考URL

公式のデバック方法:https://revel.github.io/manual/debug.html
stackoverflow:https://stackoverflow.com/questions/37944552/debugging-revel-with-intellij

手順

公式にも書いてありますが不明点があり、最終的にstackoverflowの回答がわかりやすかったです。
revelチュートリアルにあるmyappをデバックしてみます。

revel runコマンドを実行。

$ revel run myapp

$GOPATH/src/myapp/app/tmp/main.go が出来ているのを確認。これがIntellij上で動かすmainになります。

Intellij設定

ここの設定が中々うまいこといかず最終的には下記となります

  1. Run->Edit configuration選択。Go Buildを選択
  2. 【Run kind】Fileを選択
  3. 【Files:】先程の $GOPATH$/src/myapp/app/tmp/main.go を指定
  4. 【Program arguments:】-importPath myapp を指定
  5. 【Before launch: ...】 新規でRun external toolを作成
  6. 【Program:】$GOPATH$/bin/revel を指定
  7. 【Arguments:】 build myapp myapp/app/tmp を指定
  8. 【Working directory:】$GOPATH$/bin を指定

デバック実行

これでソース中の任意の場所にブレークポイントを設定するとデバックすることが出来ます。

実際に何のコマンドが発行されているのか

$ revel build myapp myapp/app/tmp
$ /usr/local/Cellar/go/1.12/libexec/bin/go build -i -o /private/var/folders/ny/_vrlbwh57vb8m04kg0b384m8qsbg2d/T/___go_build_main_go /Users/XXXXX/go/src/myapp/app/tmp/main.go /private/var/folders/ny/_vrlbwh57vb8m04kg0b384m8qsbg2d/T/___go_build_main_go -importPath myapp

revevでビルド後にgoでビルドをしているので、手順1のソースコードを変更した後でrevel run を毎回手動で行う必要は無さそうです。
多分他のフレームワークでも同じ手順でいけそうな感じがします