
はじめに
こんにちは。TIG/DXユニットの富山です。
私の使用するテキストエディタはVim一択でしたが、最近はVSCodeに浮気気味です。(言わずもがな Vimプラグインは入れています)
今回はVSCodeでGo言語用のデバッグ環境をテーマします!
環境構築
前提条件:
- VSCodeがインストール済であること
- Goがインストール済であること
Step 1:プラグインのインストール
Googleが公開しているVSCode用のGoプラグインである、Go for Visual Studio Codeをインストールします。(2020年6月に開発管理がMicrosoftからGoogleのGo開発チームへ移管されました)。

インストールが終わったら、Goプラグインに必要な各種ツールをインストールしていきます。
- コマンドパレットを開く(Windows:
Ctrl + Shift
+ p
/ Mac: Command
+ Shift
+ p
)
>Go: Install/Update Tools
と入力する。
- 表示されるツールから任意のツールにチェックを入れる。

OK
ボタンを押下
VSCode上のターミナルに下記表示がされたら成功です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Tools environment: GOPATH=C:\Users\username\go Installing 16 tools at C:\Users\username\go\bin in module mode. gocode gopkgs go-outline go-symbols guru gorename gotests gomodifytags impl fillstruct goplay godoctor dlv gocode-gomod godef golint
Installing github.com/mdempsky/gocode (C:\Users\username\go\bin\gocode.exe) SUCCEEDED Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs (C:\Users\username\go\bin\gopkgs.exe) SUCCEEDED Installing github.com/ramya-rao-a/go-outline (C:\Users\username\go\bin\go-outline.exe) SUCCEEDED Installing github.com/acroca/go-symbols (C:\Users\username\go\bin\go-symbols.exe) SUCCEEDED Installing golang.org/x/tools/cmd/guru (C:\Users\username\go\bin\guru.exe) SUCCEEDED Installing golang.org/x/tools/cmd/gorename (C:\Users\username\go\bin\gorename.exe) SUCCEEDED Installing github.com/cweill/gotests/... (C:\Users\username\go\bin\gotests.exe) SUCCEEDED Installing github.com/fatih/gomodifytags (C:\Users\username\go\bin\gomodifytags.exe) SUCCEEDED Installing github.com/josharian/impl (C:\Users\username\go\bin\impl.exe) SUCCEEDED Installing github.com/davidrjenni/reftools/cmd/fillstruct (C:\Users\username\go\bin\fillstruct.exe) SUCCEEDED Installing github.com/haya14busa/goplay/cmd/goplay (C:\Users\username\go\bin\goplay.exe) SUCCEEDED Installing github.com/godoctor/godoctor (C:\Users\username\go\bin\godoctor.exe) SUCCEEDED Installing github.com/go-delve/delve/cmd/dlv (C:\Users\username\go\bin\dlv.exe) SUCCEEDED Installing github.com/stamblerre/gocode (C:\Users\username\go\bin\gocode-gomod.exe) SUCCEEDED Installing github.com/rogpeppe/godef (C:\Users\username\go\bin\godef.exe) SUCCEEDED Installing golang.org/x/lint/golint (C:\Users\username\go\bin\golint.exe) SUCCEEDED
All tools successfully installed. You are ready to Go :).
|
Step 2:デバッガツール delve
のインストール
今回はGoのデバッグツールである、delve を使用します。
Step1-3. 表示されるツールから任意のツールにチェックを入れる。
にて、 dlv
にチェックを入れている場合、VSCode側でインストールを行ってくれるので、このステップは飛ばして大丈夫です。
インストールを行うために、下記コマンドを実行します。
1
| $ go get -u github.com/derekparker/delve/cmd/dlv
|
インストールが完了したら、ターミナル上で dlv
コマンドが実行できることを確認してください。
1 2 3 4
| $ dlv version Delve Debugger Version: 1.5.0 Build: $Id: ca5318932770ca063fc9885b4764c30bfaf8a199 $
|
使ってみた
それではVSCodeからデバッグを行ってみましょう。
手始めにVSCodeで簡単なGoプログラムを書いてみます。
main.go1 2 3 4 5 6 7 8
| package main
import "fmt"
func main() { msg := "hello world" fmt.Println(msg) }
|
デバッグのセットアップ
launch.json
の作成
- VSCodeの
RUN
コンソール画面に移動
create a launch.json file.
を押下
- VSCode中央上部に
Select Environment
と表示されるので、 Go Dlv (Experimental)
を選択

上記 3終了後に .vscode/launch.json
ファイルが生成されます。
デフォルトでは、type
フィールドが "type": "godlvdap"
となっているので、"type": "go"
へ書き換えましょう。
launch.json1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "auto", "program": "${fileDirname}", "env": {}, "args": [] } ] }
|
ちなみに、単体テストのデバッグを行う場合は、下記のように設定します。
launch.json(一部抜粋)1 2 3 4 5 6
| "mode": "test", "args": [ "-test.v", "-test.run", "TestYourFunc" ],
|
args
に -test.v
とすることで verboseモード
- テスト関数単位で実行する場合は
-test.run
と置き、対象とするテスト関数名を記載します(例だと TestYourFunc
)
今回は紹介しませんが、launch.json
には他にも予約語の属性が存在するので、興味をお持ちの方はこちらをご参照ください。
いざ、デバッグ
さぁ、実行してみましょう。
9行目にブレークポイントを設定してみます。(行番号の左側をクリックで設定)
赤丸が該当行左側に表示されたら、設定完了です。

ブレークポイントの設定が終わったら、 F5
キーで実行してみます。
RUNコンソールのVARIABLES
部分にて、ブレークポイントで設定した行の変数の中身が確認できていますね。これは便利です。

また、VSCode画面中央上部に表示されているパネルでContinueをはじめ、Restartなどの操作ができます。
関連情報
VSCodeのGo周りでは多賀さんの記事もオススメです。
市川さんの記事のVSCodeの拡張機能の共有方法すると便利です。
おわりに
これでデバッグ用にPrint文を埋め込んだままcommitしてしまう自分にオサラバです👋
デバッグ機能をフル活用して快適な開発ライフを。