Go言語のデバッグ

今回は「Go言語(Golang)」を、VSCodeで実行とデバッグできる様にセットアップします。GolangはNode.jsなどと同じバックエンドのフレームワークになっています。軽量・シンプルなため高速に動作する様です。実行環境はWindows上のVSCodeになっています。WSL2で実行したい場合はこちらの記事等を参照してVSCodeをセットアップしてください。
今回の記事を作成するにあたり、以下の講座で勉強させていただきました。Golangの文法や型、標準パッケージと呼ばれる初期状態で含まれている機能等を丁寧に解説されています。
Udemy
【Go基礎入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)
Golangをインストールします
こちらのリンクからお使いの環境に合わせたGolangのインストーラーをダウンロードしてデフォルト設定でインストールします。

Ubuntu(WSL2)の場合は以下の様に入力するとインストールされます。
sudo apt install golang
WindowsもWSL2もターミナル画面に以下の様に入力するとバージョンが確認できます。
go version
環境変数(GOPATH)を設定します
Golangは「GOPATH」という環境変数に設定されたフォルダ(単一のワークスペース)でプロジェクトを管理する様です。プロジェクトが依存するパッケージ等はこのフォルダ直下にある「pkg」フォルダ内にある「mod」というフォルダ内に保存される様です。プロジェクト自体は「src」というフォルダを作成してその中に作成する様です。複数のプロジェクトを作成可能です。「bin」や「pkg」フォルダは必要に応じて自動的に作成される様です。
[GOPATH]
├─bin
├─pkg
│ ├─mod
│ └─sumdb
└─src ※このフォルダ内にプロジェクトを作成します。
Windowsで環境変数を設定するには、VSCodeに「Ctrl + @」と入力して表示されたターミナル画面等に以下の様に入力します。
control sysdm.cpl
「システムのプロパティ」ダイアログが開きますので、「詳細設定」タブ内にある「環境変数」ボタンを押します。

表示された画面で「新規(N)...」ボタンを押して「GOPATH」環境変数を追加します。フォルダはご都合に合わせて任意の場所を設定してください。

WSL2の場合はターミナル画面に以下の様に入力すると設定できます。GOPATHフォルダはご都合に合わせて任意の場所を設定してください。
cd ~
echo export GOPATH=/home/user01/go-projects >> .profile
source .profile
VSCodeに拡張機能を追加します
VSCodeの「拡張機能」ボタンを押して入力欄に「go」と入力します。表示されたリストから以下の「Go」という拡張機能をインストールします。

以上で前準備は完了です。
Golangプロジェクトを作成して実行します
Windows版のVSCodeでGolangプロジェクトを作成して、ブレークポイントで停止するのを確認します。
任意のアプリケーション名フォルダー(Go等)を「src」フォルダ内に作成してVSCodeで開きます。「Ctrl + @」と入力してターミナル画面を開いて以下の様に入力してパッケージ(モジュール)を初期化します。
go mod init
VSCodeで「hello.go」というファイルを作成して以下の様に入力して保存します。
package main
import "fmt"
func main() {
fmt.Println("Hello!")
}
6行目辺りにブレークポイントを設定して「F5」キーを押すとブレークポイントで停止します。

デバッグ設定ファイルを作成したい場合は、実行とデバッグ画面にある「launch.json ファイルを作成します。」をクリックして、上部に表示された選択肢から「Go: Launch Package Debug/test the package...」を選択します。

以下の様な設定項目が追加されます。後はgoファイルを表示して「F5」キーを押すか、実行とデバッグ画面の「デバッグの開始」ボタンを押すとデバッグが開始されます。
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}"
}
]
}
もし以下の様なエラーが発生した場合は、ターミナル画面を開きプロジェクトのフォルダ内で「go install -v」と入力すると治るかもしれません。(GOPATHフォルダ直下にある「bin」フォルダ内に「dlv」という実行ファイルがない場合に発生する様です。)

以上です。よろしかったらお試しください。