隙あらば寝る

うぇぶのかいしゃではたらくえんじにあがかいています

panicparse

golang のソフトウェアが panic するとスタックトレースが出る。

読みやすいかと言われるとそんなことはなく、goroutine の数だけスタックも表示されるのですごいことになる。

maruel/panicparse · GitHub

スタックトレースを読みやすく整形してくれるツール

使い方は go run XXX | pp という感じでパイプとして繋いでスタックを食わせたり、一旦スタックをファイルに保存してから読み込ませたりという感じ。

Exported symbols are bold, private symbols are darker.

Stdlib is green, main is yellow, rest is red.

あたりが個人的には嬉しい所。デッドロック時の出力がわかりやすくなるのも良さそう。

基本的には開発中のデバッグに使うのがメインのように感じる。

あと、本番環境のスタックトレースを直接 pp に食わせるのは現実的に難しいので、一旦端末やログからファイルに保存して手元で調査の時に pp という使い方かな。

実際のところ、整形しないと読めないようなスタックは頻発しないと思うので(だいたいの場合一番上から数スタック辿ればわかる)、こういうツールもあるよというところか。