LoginSignup
8
6

More than 3 years have passed since last update.

VSCode を使って Go のデバッガーが動くまでの設定をした

Posted at

自分用メモです。
ハマった所を記載します。

基本的には以下の記事に沿う形で出来ました。

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

なお、Go は初心者となり、正確ではない記述などもあるかもしれません。

環境

  • macOS Catalina
  • Go 1.16.3
  • VS Code 1.55.2
  • $GOPATH を設定済み
  • $GOPATH/bin を環境変数 $PATH へ追加済み

経緯

以下をやろうとしていました。

Goで覗くシステムプログラミングの世界

上記では IntelliJ IDEA Community版を使って Go のデバッガーを動かしています。

ただし、現状で以下の比較表を見ると IntelliJ IDEA Community版では Go 言語は使えなさそうでした。

IntelliJ IDEA

その為、VS Code で同じ環境を作ることを目標としました。

ハマったポイント

go get が失敗する

以下のようなエラーで go getが失敗。

$go get github.com/golang/example/hello: module github.com/golang/example/hello: Get "https://proxy.golang.org/github.com/golang/example/hello/@v/list": x509: certificate is valid for xxxxxx, not proxy.golang.org

これは理由を調べると事象が発生した該当環境で proxy.golang.org がブロックされていたことが原因でした。

これについては proxy.golang.org を利用しないように以下のコマンドを実行すれば事象が回避できました。

# 設定を上書き
$go env -w GOPROXY=direct

# 確認
$go env |grep GOPROXY
GOPROXY="direct"

これは環境依存の問題なので多くの場合は事象は発生しなさそうです。

VS Code から Go を実行すると失敗する

HelloWorld 用のファイルを作成。

hello.go
package main
import "fmt"
func main() {
    fmt.Println("hello world")
}

Terminal からは成功

$go run hello.go
hello world

ただし、当該ファイルを VS Code で開いて VS Code 上の「Run and Debug」から実行すると以下のエラーとなる。

go: go.mod file not found in current directory or any parent directory; see 'go help modules'
exit status 1
Process exiting with code: 1

launch.json を設定すればうまくいくのかもしれませんが、以下あたりを見つつ、やってみたものの、うまくいきませんでした。

golang/vscode-go

エラーを改めて見ると go.mod がない、ということでこのキーワードを元に調査。

Go Modulesとマルチモジュール構成でGo Homeする方法

上記記事を参考にやってみた所、成功。

まずは Terminal で以下を実施。

# ディレクトリ作成
$mkdir hello-module

# 移動
$cd hello-module

# カレントディレクトリに go.mod を作る
$go mod init hello-module
$ls
go.mod

# こんなことが書いてある
$cat go.mod
module hello-module

go 1.16

# helloworld を書く
$vi hello.go

# Terminal 上で動くことを確認
$ go run hello.go
hello world

その後、VS Code で上記フォルダ(今回の場合 hello-module) を開いて同じように「「Run and Debug」を実行した所、無事「hello world」の出力を確認。

また、ブレークポイントを設定することでデバッグなども出来る事を併せて確認。

go.png

以下などを見るとモジュール対応モードになっていることが影響しているかもしれませんが、動いたので一旦これ以上の調査は保留。

Go のモジュール管理【バージョン 1.16 改訂版】

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6