🐀

CPUが原因でvscodeでgoのデバッグができなかったときの対処法(M1mac)

2022/01/04に公開
2

概要

M1mac で vscode を使って go のデバッグをしようとしたときに、vscode のポップアップで以下のエラーが発生しました。

could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture

意外とハマったので対処法についてまとめます。

対処法

環境を以下のようにする必要がありました。自分の環境では、go(goenv)がで arm64 だったのと、vscode も Intel 版だったのでうまく動作できませんでした。どちらも、再インストールすることで無事に実行できました。

ツール 環境
vscode Apple Silicon 版
go darwin/arm64 版

vscode と go のアンインストールとインストール

vscode

アンインストール

Mac の Application(アプリケーション)フォルダーから vscode を削除すれば完了です。拡張機能などはほかのフォルダーに保存されているので特に気にせず削除できます。

インストール

以下の url のページから「Apple Silicon」をクリックして、ダウンロードした後に解凍すれば完了です。Application(アプリケーション)フォルダーに移しましょう。

https://code.visualstudio.com/download

go

アンインストール

goenv と brew でインストールした go のアンインストール方法について記述します。

goenv

anyenv でインストールした場合、以下のコマンドでアンインストールします。

anyenv uninstall goenv

goenv を brew または Git でインストールしていた場合、以下のどちらかでアンインストールします。

brew uninstall goenv
rm -rf ~/.goenv

また、bashrc(zshrc)に以下の記述があった場合は削除します。

eval "$(goenv init -)"
export PATH="$GOROOT/bin/$PATH"
export PATH="$PATH:$GOPATH/bin"

brew

brew でインストールした場合は以下でアンインストールします。

brew uninstall go
sudo rm -rf /usr/local/go
sudo rm -rf /etc/paths.d/go

インストール

以下のリンクから Apple Silicon の go インストーラをダウンロードします。インストーラを起動したら、指示に従ってインストールしましょう。

https://go.dev/dl/

go 自体は GOPATH の設定をしなくても動作しますが、godoc の動作に必要だったため以下のように bashrc(zshrc)に記述します。

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

インストール後、ターミナルからgo versionを実行したさいにdarwin/arm64が確認できたら完了です。

> go version
go version go1.17.5 darwin/arm64

動作確認

動作確認方法について記述します。

以下のようなソースコードを作成します。6 行目(fmt.Println)でブレークポイントを指定します。

package main

import "fmt"

func main() {
	fmt.Println("Hello World!")
}

Go の拡張機能「Go for Visual Studio Code」をインストールして、command + shift + pGo: Install/Update Toolsを選択します。
以下のようにすべてのチェックボックスを選択し「OK」をクリックしてインストール完了を待ちます。

そして、デバッグから「実行とデバッグ」をクリックした後、以下のように画面下部がオレンジ色になれば成功です。

まとめ

M1Mac の vscode で go のデバッグをしようとしたときに発生した以下のエラーの対処法についてまとめました。Apple Silicon は、このような箇所でハマってしまうので注意が必要ですね。特に、goenv は非対応だったので、時間がかかってしまいました。

could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture

参考

https://note.com/hiroperu_note/n/n70f7542865bc

https://qiita.com/Nekonecode/items/8561bbe27830090bc70c

https://github.com/go-delve/delve/issues/2604

Discussion

熊木熊木

VSCodeでなくIntelliJ IDEAなのですが、同じエラーが出て悩んでました。
brewでgoがインストールされており、それが何かしら悪さした可能性があると思い、公式サイトのインストーラでインストールしたら、ちゃんとIntelliJ IDEA上でデバッグできるようになりました!
ありがとうございました!

mskmsk

エラーが修正されてよかったです!
なるほど、IntelliJ IDEA でも同様のエラーが発生するんですね。
教えていただきありがとうございます!
記事に追記させていただきます。