[Go言語]go mod vendorで行うデバッグ術~ログを仕込もう!~

こんにちは。KOUKIです。

とあるWeb系企業でエンジニアをやってます。

皆さんは、プログラミングをするときにデバッグを行うでしょうか?
(デバッグをしないエンジニアに未だかつて出会ったことはありませんが,,,)

デバッグの一つの方法として、「プログラムの中にログを仕込む」が王道の一つだと思います。

しかし、「他の人が開発したパッケージ内でデバッグしたい」場合は、どのようにログを仕込めばいいのか想像できるでしょうか。

その答えを握るのが「go mod vendor」という機能です。

この機能については、実際に使いながら解説していきます。

事前準備

下記のコマンドを実行してください。

パッケージ管理ツール(Go Mod)

go mod init」は重要なので、必ず実行しましょう。

これはGoのパッケージ管理ツールです。上記のコマンドを実行するとローカルに「go.mod」ファイルが作成されます。

中身は以下です。

例えば、golangのWebフレームワークであるFiberをインストールしてみましょう。

何やら色々とダウンロードされましたね。

go.modをチェックしてみましょう。

依存パッケージなどが列挙されたことがわかりますね。

Webアプリを実装

main.goに下記のプログラムを実装します。

下記のコマンドで、Webアプリを起動しましょう。

ブラウザから「http://localhost:8080/」にアクセスします。

デバッグ方法

事前準備が長くなりましたが、ようやく本題です。

go.modファイルが存在するディレクトリ上で、「go mod vendor」を実行してください。

「vendor」フォルダ作成され、ここに依存パッケージが全て格納されたことがわかりますね。

今後、Goのプログラムはこのvendorからプログラムを読み込みます。

つまり、ここにログを仕込めばいいのです。

試してみましょう。

例えば、以下のコードのNewの部分にカーソルを当てて「F12」キーを押下します。
Visual Studioの場合は、これでパッケージ内の該当のコードに飛ぶことが可能です。

飛び先は、「vendor」フォルダ配下の「app.go」ファイルであることがわかります。

ログを仕込んでみましょう。

log.Println(“———————-New————————-“)」の感じで、ログを仕込んでみました。

Webアプリを立ち上げ直します。

コマンド実行直後にログが出てきましたね!

グレートですよ。こいつは!!!!

Goのコードは、「vendor」フォルダを優先的に読み込むのでログを仕込めるわけですね。

もちろん「vendor」フォルダを消せば、ログも消えます。

まとめ

デバッグを行う上で、ログを仕込むことはとても有効な手段の一つです。

Golangでは、本記事で紹介した方法を行えば簡単にデバッグすることができますね^^

vendorを実行するためには「go mod init」が必要なので、それをお忘れなく。

それでは、また!

Go言語まとめ

まとめ記事


コメントを残す