$yanutetsu->{blog}

プログラマ三大美徳なPM

GAE/Goのデバッグをエレガントに!

やぬてつです。

この記事は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:

github.com

基本的にfmt.Printfmt.Printlnfmt.Printfの実装を真似しています。package を debug にしているので使う時にfmtdebugに書き換えるだけで使うことができます。例えばさっきのソースコードならこんな感じになるかと思います。

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パッケージのソースコードはめっちゃ為になるので読んだようが良いです。