はじめに この記事はGoアドベントカレンダー の5日目の記事です。 自己紹介 ちょっとだけ自己紹介を。好きな標準ライブラリはgo/astやgo/typesです。愛憎半ば的なライブラリはx/tools/go/loaderです。今年はgomvpkgのlight版を作ったりしてました。 ちょっとした導入 溜まっていく書き捨てのコードたち goで書くことに慣れてくるとけっこう何でもgoで書きたくなるときがあります。通常のgoの用途ということであればシングルバイナリということで何某かのツールを作ってビルドと言うことが多いですが、goが手に馴染んでくると共にちょっとした処理もgoで書いてしまって、スクリプト感覚で go run を呼び出すというようなことをしたくなります。 時間の経過と共にそのような書き捨てのコードが徐々に溜まっていきます。 ...と、言う風に書かれたコードたちありました。 初めて触っ
Goはgo routineを使って並行処理を容易に書くことができるが、下手に書くと色々なfunctionが相互に入り乱れて処理が追いづらいときがある。ここではGoでfunctionをトレースする方法をメモしておく。 結論から言えば、runtime.Callerを使えば良い。なお、debug.PrintStackでstack traceを出力することができるが、標準エラー出力となるのでちょっと使いづらい。しかし、ただコンソールで出力したいだけなら、debug.PrintStackのほうが簡単であるし、これ以降を読む必要は無い。 func Caller func PrintStack 簡単な使い方 runtime.Callerとは何なのかはマニュアルを参照すべきだけど、簡単に言うと、引数の数値に応じてCallerが呼び出された時点での呼び出し元の情報を提供してくれるfunctionと言える。例
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く