やぬてつです。
この記事はGAE/Goで頑張っている人をターゲットにしています。
GAE/Go良いですよね。GAEももちろん良いですし、Golangも良いですよね。よってGAE/Go最強ですね!
ところで、GAE/Goでデバッグはどうやっていますか? 色々やり方あるのかもしれませんが、結局のところPrintデバッグですよね?
それでいっぱいfmt.Println("hoge")って書きますよね? まーコピペするからそれほど面倒ではないと思いますけど?
でもどこまで処理が通過したかとか確かめるときに
fmt.Println("hoge 1") ... fmt.Pirntln("hoge 2") ... fmt.Println("hoge 3")
とかやって、あ、hoge 1 と hoge 2の間だな、ってなった時に
fmt.Println("hoge 1") ... fmt.Println("hoge 1.1") ... fmt.Pirntln("hoge 2") ... fmt.Println("hoge 3")
fmt.Println("hoge 1.1")
とか入れ始めちゃいますよね。これを始めてしまうともう収拾がつかなくなってきます。
そこで、デバッグプリントを出力する際にファイル名と行番号を出力するモジュールを作りました。:tada:
基本的にfmt.Print
、fmt.Println
、fmt.Printf
の実装を真似しています。package を debug にしているので使う時にfmt
をdebug
に書き換えるだけで使うことができます。例えばさっきのソースコードならこんな感じになるかと思います。
package main import "github.com/yanutetsu/go-debug" debug.Println("hoge 1") // => hoge.go:5 hoge 1 ... hoge := "piyo" debug.Pirntf("%s\n", hoge) // => hoge.go:8 piyo
ファイル名と行番号を表示してくれるので、Print文の内容に迷わずエレガントにデバッグできますね。
debug.Print
を使ってGAE/Goライフをもっと楽しみましょう!
※詳しい使い方はGitHubのソースを読んでね!
P.S. fmt
パッケージのソースコードはめっちゃ為になるので読んだようが良いです。