こんにちは。さきほどゲームの実況動画を2本紹介していた私です。
話をプログラム関連に移すと、
今月より仕事でがっつりとNode.jsを、プライベートでGo言語をちょこちょこ触っています。
どちらも個性的で面白く、Referenceを見ながら悪戦苦闘しつつコードを書いております。
さて、GolangでGodebugを使ってデバッグしてみたら、良さげなだったので、こちらにメモ的に残しておきます。
("Go デバッグ"で検索するとGDBを使ったデバッグ方法が検索結果に表示され、Godebug関連の日本語記事は見つかりませんでした(そこまでガッツリ探していわけではないものの)
Godebugを使ったデバッグは現時点ではあまり主流じゃないのかもしれませんが、個人的にはGDBライクに使えて良さげな感触だったし、せっかくなのでdebugしつつコード書いていこうとしています)
導入
インストールは"go get"するだけ。
導入が簡単なのも良いですね。
なお、導入手順はじめ、諸々の情報はGithubのREADMEに載っています。
$ go get github.com/mailgun/godebug
試しにデバッグ用のサンプルコードを書いてみる。
package main import ( "fmt" ) func main() { hello := "HELLO WORLD" _ = "breakpoint" fmt.Println(hello) }
下記のコマンドでGoファイルを実行すると、
$ godebug run test.go
下記のような感じで止まってくれる
-> _ = "breakpoint" (godebug)
debugコマンド
h(elp): ヘルプを表示
n(ext): 次の行に進める
s(tep): 次のステップに進める
c(ontinue): 次のブレークポイントまで進める
l(ist): 現在のソースコード箇所を表示させる(※)
p(rint) [expression]: 変数の内容を表示させたり、goの式の評価したりする
q(uit): プログラムを終了させる
※こんな感じになる
-> _ = "breakpoint" (godebug) l ) func main() { hello := "HELLO WORLD" --> _ = "breakpoint" fmt.Println(hello) }
実行時エラー (godebug does not work with code that imports net/http )
で、ここまでは普通に動くんですが、
自身でガリガリ書いていたGoプログラムのデバッグをしようとしたときに、
下記の記事にあるのと全く同じ現状が起きました。
こんなエラーメッセージですね。
couldn't load packages due to errors: net, net/http
これの対処方法については上に張ったリンクにも書かれているとおり、シンボリックリンクを貼ってやることで問題なく動くようになるようです。
$ cd $GOPATH/src $ ln -s golang.org golang_org
原因とかまでは追っていなく、ひとまずは早く動かしたいという方向け(と、自分の備忘録向け)にこの記事を残しておきます。
というわけで、実装に戻ります🐸