post Image
Visual Studio CodeでGo言語のデバッグ環境を整える

はじめに

Visual Studio Code(以下VSCode)にてGo言語開発のデバッグをできるようにするまでを示します。

前提条件

  • MacOS (筆者の環境はSierra 10.12.1)
  • Go言語はインストール済み (筆者の環境は 1.9.2
  • $GOPATHを設定済み
  • $GOPATH\binを環境変数$PATHへ追加済み
  • VSCodeをインストール済み

設定内容

delveをインストール

VSCodeでデバッグを実施するにはdelveデバッガツールを導入します。delve自体は単独のコマンドラインで利用するデバッガでVSCodeがそれをラップしています。

delveの使い方は公式ドキュメントとHelpと以下の記事を参照してください。

https://qiita.com/minamijoyo/items/4da68467c1c5d94c8cd7

インストール ※

$ go get -u github.com/derekparker/delve/cmd/dlv

※ MacOSへのインストールではbrewを利用してOSへインストールも可能ですが、証明書取得の手間が出るので$GOPATH\binを環境変数$PATHへ追加し、go getでdelveのバイナリを$GOPATH\binへインストールした方がやりやすいです。

VSCodeにGo言語の拡張機能をインストール

VSCodeの拡張機能から以下のGo言語用の拡張機能をインストール

Rich Go language support for Visual Studio Code

VSCodeの$GOPATHを確認

SHELL設定の関係などで$GOPATHが普段のターミナルとVSCodeでは異なる場合があるので確認します。

統合ターミナルを開く(^`)

$ echo $GOPATH

出力が、想定した$GOPATHであることを確認します。

デバッグ

デバッグ対象のプログラムがあるディレクトリを開きデバッグビューを開きます。

ブレークポイントを指定しデバッグができます。

スクリーンショット 2018-01-08 04.13.18.png

このとき以下のlaunch.jsonファイルがVSCode上で開いているディレクトリに作成されます。

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 2345,
            "host": "127.0.0.1",
            "program": "${fileDirname}",
            "env": {},
            "args": [],
            "showLog": true
        }
    ]
}

launch.jsonにて重要なキー

program

必須項目。デバッグ対象の実行ファイルまたはエントリポイントのファイルが存在するディレクトリのPathを指定する必要があります。
デフォルトでは${fileDirname}という予約語が設定されており、これは「VSCode上で現在オープンファイルを含むディレクトリ」を意味しています。

下記はVSCodeでの予約語の一覧です。

${workspaceFolder} – VSコードで開いたディレクトリのパス
${workspaceFolderBasename} – スラッシュのないVSコードで開いたフォルダの名前
${file} – 現在開いているファイル
${relativeFile} – workspaceFolderを基準とした現在開いているファイル
${fileBasename} – 現在開いているファイルのベース名
${fileBasenameNoExtension} – ファイル拡張子を持たない現在開いているファイルのベース名
${fileDirname} – 現在開いているファイルのディレクトリ名
${fileExtname} – 現在開いているファイルの拡張子
${cwd} – 起動時のタスクランナーの現在の作業ディレクトリ
${lineNumber} – 現在開いているファイル内にて選択されている行番号

mode

デフォルトはdebugモード。debugモードではprogramで指定したプログラムをコンパイルしデバッガー配下で実行します。その他testモードでは対象に含まれる_test.goなテストコードをデバッガー配下で実行します。

以下はmodeキーの一覧です。

debug – プログラムフォルダの内容をコンパイルし、デバッガの下で起動します。 [デフォルト]
test – プログラムフォルダ内のテストをデバッグします。 単一のテストをデバッグするには、-test.runとTest名をargsとして渡します。 さらに、-test.vを渡すと冗長出力も得られます。
exec – プログラムで指定されたビルドされたバイナリを実行します。
remote – 遠隔のヘッドレスDelveサーバに接続します。 リモートマシンでDelveを手動で実行し、リモートマシンを指す追加のremotePath、host、portデバッグ設定オプションを指定する必要があります。

ユニットテストでデバッグするには

下記リンクの別記事を作ったのでご参照ください。

VSCodeでGoのユニットテストをデバッグしよう

参考


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。