WSL2+GO+VSCODEで開発
前置き
事前にWSL2のインストールとその環境下でDocker-composeが動くようにしてください。
フォルダ構成
テストするうえで、以下のフォルダ構成を行います。
./
├── Dockerfile
├── docker-compose.yml
└── golang
└── main.go
各ファイルの中身について
FROM golang
RUN go get github.com/derekparker/delve/cmd/dlv
WORKDIR /go/src/app
version: '3'
services:
app:
build: .
ports:
- "5050:5050" #delve用のポート
volumes:
- "./golang:/go/src/app"
privileged: true
command: dlv debug --headless --listen=:5050 --log --api-version=2
package main
import "fmt"
func main() {
i := 0
fmt.Println("hello world")
fmt.Println("hello world")
fmt.Println("hello world", i)
}
VScode設定
launch.jsonファイルを以下のように修正します。
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch", //ローカル使用
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {},
"args": []
},
{
"name": "Remote", //リモート使用
"type": "go",
"request": "launch",
"mode": "remote",
"remotePath": "/go/src/app", //コンテナ内のパス
"port": 5050, // dlv debugのポートを指定変更可能
"host": "karosu-main", //wslを立ち上げたときに表示されるhost名を指定
"program": "${fileDirname}",
"env": {},
"args": [],
"showLog": true
}
]
}
今回、wsl2のホスト名がkarosu-mainのためそのようにしていますが、人によって違うかもしれませんので、
実際にWslを起動して、hostname
コマンドで調べてみてください。
あと通信が確立しているかの確認はコマンドプロントやpowershellを起動して、ping karosu-main
が通るか確認してください。
作業実行
以下の作業手順に沿って作業を行えば、確認できます。
1. wslを起動
2. docker-composeを起動
3. 実行の構成でRemote
を選択
4. main.goでブレイクポイント指定
5. デバッグの開始
デバックのPrint文の出力は、ターミナル上に出力されます。
Author And Source
この問題について(WSL2+GO+VSCODEで開発), 我々は、より多くの情報をここで見つけました https://qiita.com/karosuwindam/items/5885de704e1bd8ca5f7b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .