$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

Goで実際にどのパッケージがコンパイルされたかを確認する

Goでどのパッケージが再コンパイル予定か確認する - $shibayu36->blog;の続き。前回は大体のコンパイル計画を知る形だったが、今度は実際にどのpackageがコンパイルされたかを確認する方法についてメモ。

まずgoのコマンドは-xオプションを使うことで実行されたコマンドをSTDERRに出力できる。これを使ってログをファイルに書き出す。

go test -x -list . ./... 2>log.txt

ログの内容はこんな感じで結構ぐちゃっと入っている。

この中でcompileしているのは/compile -o $WORK/b009/_pkg_.aみたいなことをしている部分に見えるので、以下のコマンドでコンパイルしたpackageを抜き出す。するとこんな感じで実際にコンパイルしたものがわかる。

$ grep "/compile " log.txt | awk -F'-p ' '{split($2, a, " "); print a[1]}'\n
internal/godebugs
internal/unsafeheader
math/bits
internal/coverage/rtcov
unicode/utf8
internal/goarch
internal/itoa
...
google.golang.org/protobuf/internal/flags
crypto/internal/boring/sig
crypto/subtle
runtime/internal/sys
google.golang.org/protobuf/internal/set
...

便利ですね。