无法在Mac M1上使用VSCode运行调试Go

ykejflvf  于 2023-03-16  发布在  Go
关注(0)|答案(8)|浏览(220)

我发现一个主题遇到了同样的问题(Can't debug Golang in vscode apple m1),但我不确定这是不是一个旧的解决方案,因为我使用的是Go版本

go1.17.1 darwin/arm64

dlv version 1.7.2

以及

VSCode version 1.60.2 (arm64)

Mac M1 BigSur (11.6)

当我运行调试(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

并且出现弹出错误:

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

我试过用dlv 1.6.1将go版本降级到1.16.8 arm64,但仍然得到同样的错误。
我可以在两个版本上成功地使用go build。

disbfnqx

disbfnqx1#

以下是我解决这个问题的方法。

  1. Uninstall Golang(AMD-64版本)。
    1.安装Golang(ARM-64),用go env GOARCH确认
    1.从$GOPATH/bin中删除(VS-Code使用的工具)二进制文件(重要
    1.重新启动您的VS-Code并安装VS-Code所需的工具(如果没有安装,vscode会抱怨并要求您安装它们)

问题的根本原因:我不小心在我的Apple Mac M1中安装了amd-64版本而不是arm-64版本。

感谢Painhardcore的回答为我指出了正确的方向。

toe95027

toe950272#

1.确保您的VSCode使用arm 64版本。(它可以使用与系统不同的go版本)

  1. Run Go:安装/更新工具,将用arm 64 go版本重建所有工具。
carvr3hs

carvr3hs3#

对我有效的方法:
1.检查你的mac正在使用的“芯片”,你可以从"About This Mac" > "Overview" > "Chip"检查
1.如果使用苹果芯片,那么下载“arm 64”类型的文件,如“go-darwin-arm64.pkg”,“vscode-arm 64”等。
1.如果使用英特尔芯片,则使用“amd”类型下载。
1.从https://github.com/go-delve/delve/tree/master/Documentation/installation下载并安装“DELVE”
1.运行调试器。
让我知道,如果你想“launch.json”文件配置太,调试。

2012年4月11日编辑

共享launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}/main.go",
            "args": [],
        }
    ]
}
5gfr0r5j

5gfr0r5j4#

这个答案对我有效。安装ARM64并重试。
https://github.com/go-delve/delve/issues/2604#issuecomment-1069740132

vql8enpb

vql8enpb6#

写这个,以便任何人面临同样的问题,而迁移到M1 mac可以得到所有所需的信息在一个地方。
我在将数据从我的Intel Mac迁移到M1(使用苹果迁移助手)后遇到了这个问题,所以基本上,Amd 64的Go二进制文件和VSCode被复制到了M1 Mac(Arm 64)
因此,我不得不卸载(删除所有与Go语言相关的文件,即位于/home/<my_user>/go和位于/usr/local/go的Go语言可执行文件),并为arm 64重新安装Go语言和vscode。
发布后,我在使用delve在vscode中运行调试器时遇到错误could not launch process: EOF,为了解决这个问题,我引用了github线程-https://github.com/go-delve/delve/issues/2794
并执行以下步骤:

sudo rm -rf /Library/Developer/CommandLineTools

xcode-select --install

在那之后,我就可以使用delve来调试vscode中的代码了

kwvwclae

kwvwclae7#

Go安装主页(https://go.dev/doc/install)提供了一个“下载”按钮,即AMD 64。您必须转到以下位置:https://go.dev/dl/
并选择正确的架构。一旦你完成了,你需要卸载已经提到的@prakash-p.
然后你还需要在vs代码中重新安装go工具,就像@iamcmnut提到的那样

cetgtptt

cetgtptt8#

解决方案

问题是你安装了非M1版本的GoLang和/或VSCode。Go和VSCode都有英特尔和苹果芯片的版本。你需要两者都是arm 64(苹果硅)版本
如果您没有使用arm 64发行版安装GoLang和VSCode,那么这就是问题所在。

要解决此问题

  • 从系统中完全删除GoLang和VSCode:
    *完全删除GoLang
  • sudo rm -rf /usr/local/go
  • sudo rm /etc/paths.d/go
  • sudo rm -rf ~/donald/go(用您自己的帐户名替换donald
  • (删除此问题是🔑解决您的问题的方法)
    *完全删除VSCode
  • rm -fr ~/Library/Preferences/com.microsoft.VSCode.helper.plist
  • rm -fr ~/Library/Preferences/com.microsoft.VSCode.plist
  • rm -fr ~/Library/Caches/com.microsoft.VSCode
  • rm -fr ~/Library/Caches/com.microsoft.VSCode.ShipIt/
  • rm -fr ~/Library/Application\ Support/Code/
  • rm -fr ~/Library/Saved\ Application\ State/com.microsoft.VSCode.savedState/
  • rm -fr ~/.vscode/
  • 下载每个GoLang和VSCode的arm 64版本。
  • GoLang download page-确保它显示***arm 64***(它***不能***是AMD 64)
  • VS Code for macOS download page-确保它写着***苹果硅***(它***不能是***通用或英特尔)
  • 安装GoLang
  • 安装VSCode
  • 打开VSCode。
  • 安装Go extension
  • 打开GoLang项目/目录。
  • 它会要求你安装Go语言的工具(大概有8个左右),点击“全部安装”
Installing 8 tools at /Users/donald/go/bin in module mode.
gotests
gomodifytags
impl
goplay
dlv
staticcheck
gopls
go-outline
  • 打开要运行的.go文件。
  • 使用VS代码运行它。

就这样!你现在应该可以走了👍

相关问题