Max*_*ess 5 go visual-studio-code
我有一个my-project
多根工作区:
- my-project\n - my-project-api-gateway\n - another-root-folder-we-dont-care-about\n
Run Code Online (Sandbox Code Playgroud)\n这是我的launch.json
配置文件my-project-api-gateway
- my-project\n - my-project-api-gateway\n - another-root-folder-we-dont-care-about\n
Run Code Online (Sandbox Code Playgroud)\n调试控制台输出
\nStarting: /Users/me/go/bin/dlv dap --check-go-version=false --listen=127.0.0.1:53890 --log-dest=3 from /Users/me/path/to/project/src\nDAP server listening at: 127.0.0.1:53890\nType \'dlv help\' for list of commands.\n2022/07/20 10:30:52 Error loading .env file\nProcess 13526 has exited with status 1\nDetaching\ndlv dap (13508) exited with code: 0\n
Run Code Online (Sandbox Code Playgroud)\n感谢您的帮助
\n\xe2\x9d\xaf dlv version\nDelve Debugger\nVersion: 1.8.2\n\n\xe2\x9d\xaf go version\ngo version go1.18 darwin/amd64\n\n\xe2\x9d\xaf gopls -v version\nBuild info\n----------\ngolang.org/x/tools/gopls v0.9.1\n\n\xe2\x9d\xaf code -v\n1.69.2\n\n
Run Code Online (Sandbox Code Playgroud)\n扩展Go for Visual Studio Code
是 v0.35.1
Go: Locate Configured Go Tools
输出:Checking configured tools....\nGOBIN: /Users/me/go/bin\ntoolsGopath: \ngopath: /Users/me/dev/go\nGOROOT: /usr/local/go\nPATH: /usr/local/go/bin:/Users/me/.nvm/versions/node/v16.14.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/me/.cargo/bin:/Users/me/go/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/usr/local/cassandra/bin\nPATH (vscode launched with): /Users/me/.nvm/versions/node/v16.14.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/me/.cargo/bin:/Users/me/go/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/usr/local/cassandra/bin\n\n go: /usr/local/go/bin/go: go version go1.18 darwin/amd64\n\n gotests: /Users/me/go/bin/gotests (version: v1.6.0 built with go: go1.18)\n gomodifytags: /Users/me/go/bin/gomodifytags (version: v1.16.0 built with go: go1.18)\n impl: /Users/me/go/bin/impl (version: v1.1.0 built with go: go1.18)\n goplay: /Users/me/go/bin/goplay (version: v1.0.0 built with go: go1.18)\n dlv: /Users/me/go/bin/dlv (version: v1.8.2 built with go: go1.18)\n golangci-lint: /Users/me/go/bin/golangci-lint (version: v1.45.2 built with go: go1.18)\n gopls: /Users/me/go/bin/gopls (version: v0.9.1 built with go: go1.18)\n\ngo env\nWorkspace Folder (my-project-api-gateway): /Users/me/dev/back/go/my-project/my-project-api-gateway\n GO111MODULE=""\n GOARCH="amd64"\n GOBIN="/Users/me/go/bin"\n GOCACHE="/Users/me/Library/Caches/go-build"\n GOENV="/Users/me/Library/Application Support/go/env"\n GOEXE=""\n GOEXPERIMENT=""\n GOFLAGS=""\n GOHOSTARCH="amd64"\n GOHOSTOS="darwin"\n GOINSECURE=""\n GOMODCACHE="/Users/me/dev/go/pkg/mod"\n GONOPROXY="github.com/BigBoulard/*"\n GONOSUMDB="github.com/BigBoulard/*"\n GOOS="darwin"\n GOPATH="/Users/me/dev/go"\n GOPRIVATE="github.com/BigBoulard/*"\n GOPROXY="https://proxy.golang.org,direct"\n GOROOT="/usr/local/go"\n GOSUMDB="sum.golang.org"\n GOTMPDIR=""\n GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"\n GOVCS=""\n GOVERSION="go1.18"\n GCCGO="gccgo"\n GOAMD64="v1"\n AR="ar"\n CC="clang"\n CXX="clang++"\n CGO_ENABLED="1"\n GOMOD="/Users/me/dev/back/go/my-project/my-project-api-gateway/go.mod"\n GOWORK=""\n CGO_CFLAGS="-g -O2"\n CGO_CPPFLAGS=""\n CGO_CXXFLAGS="-g -O2"\n CGO_FFLAGS="-g -O2"\n CGO_LDFLAGS="-g -O2"\n PKG_CONFIG="pkg-config"\n GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/1g/fytltrn578gg3xgp3c_sglhw0000gq/T/go-build1439123167=/tmp/go-build -gno-record-gcc-switches -fno-common"\n
Run Code Online (Sandbox Code Playgroud)\n
这里的技巧是 my.env
位于我的工作区文件夹下: ${workspaceFolder}/.env
但是delve不用作${workspaceFolder}
当前工作目录,这就是我用来从这里os.Getwd()
获取的原因.env
。
load_eng.go
摘录如下:
curDir, err := os.Getwd()
if err != nil {
log.Println(err)
}
loadErr := godotenv.Load(curDir + "/.env")
if loadErr != nil {
log.Fatalln("can't load env file from current directory: " + curDir)
}
Run Code Online (Sandbox Code Playgroud)
因此,我只需在文件中$cwd
添加以下内容来设置当前工作目录:"cwd": "${workspaceFolder}"
launch.json
"configurations": [
{
"name": "My Application",
"type": "go",
"request": "launch",
"mode": "debug",
"envFile": "${workspaceFolder}/.env",
"program": "${workspaceFolder}/src/main.go",
"cwd": "${workspaceFolder}"
}
]
Run Code Online (Sandbox Code Playgroud)
有用的资源:
https://code.visualstudio.com/docs/editor/variables-reference#_predefined-variables
https://github.com/golang/vscode-go/wiki/debugging
归档时间: |
|
查看次数: |
5043 次 |
最近记录: |