我发现一个遇到同样问题的主题(Can't debug Golang in vscode apple m1)但我不确定它是否是一个旧的解决方案,因为我使用的是 Go 版本
go1.17.1 darwin/arm64
Run Code Online (Sandbox Code Playgroud)
和
dlv version 1.7.2
Run Code Online (Sandbox Code Playgroud)
和
VSCode version 1.60.2 (arm64)
Run Code Online (Sandbox Code Playgroud)
在
Mac M1 BigSur (11.6)
Run Code Online (Sandbox Code Playgroud)
当我运行 debug ( fn+f5) 时,调试控制台显示:
Starting: /Users/username/go/bin/dlv-dap dap --check-go-version=false --listen=127.0.0.1:53115 --log-dest=3 from /Users/username/go/src/project-name
DAP server listening at: 127.0.0.1:53115
Run Code Online (Sandbox Code Playgroud)
并且出现弹出错误:
Failed to launch: could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture
Run Code Online (Sandbox Code Playgroud)
我尝试使用 dlv 1.6.1 将 go 版本降级到 1.16.8 arm64 …
我的 vscode 没有检测到 golang 中的错误。
例子:
package somepackage
import "fmt"
func f(name string) string {
name = 1
return name
}
Run Code Online (Sandbox Code Playgroud)
这应该会引发类型错误,但事实并非如此。我从来没有收到任何错误。
我的settings.json包含
"go.gopath": "some/path",
"go.vetOnSave": "package",
"go.lintOnSave": "package",
"go.testOnSave": true,
"go.buildOnSave": "package",
"go.coverOnSave": true
Run Code Online (Sandbox Code Playgroud)
我能够跑了go: install/update Tools。所有工具均已成功安装。
我还可以在 vscode 中运行调试 .go 文件。
当我尝试构建 ( go build hello.go) 以下代码时:
// ~/go/src/myproj/hello.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
# runtime/internal/atomic
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:13:6: Load redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:16:24
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:19:6: Loadp redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:22:32
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:25:6: Load64 redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:28:26
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:31:6: LoadAcq redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:34:27
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:36:6: Xadd redeclared in this block
previous declaration at /usr/local/go/src/runtime/internal/atomic/atomic_amd64.go:39:37
/usr/local/go/src/runtime/internal/atomic/atomic_amd64x.go:39:6: Xadd64 redeclared in this block
previous declaration …Run Code Online (Sandbox Code Playgroud) 我正在运行 Mac OSX Yosemite。
我正在尝试从 golang 1.4 更新到 golang 1.6。我卸载了 golang 但我注意到我仍然可以运行 go 命令go version = go1.4.2 darwin/amd64。为什么会这样呢?
IMO 的指示不是很清楚。他们说
go version go1.4.2 darwin/amd64