You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio Code中调试Go应用出现Rosetta错误如何解决

问题排查与解决方案

一、现有操作的问题点

  1. launch.json配置缺失编译标签:你正常启动服务时加了-tags=jsoniter参数,但调试配置里没有对应配置,会导致调试启动时的编译产物和你正常运行的不一致,这是第一个明显的配置遗漏。
  2. 未确认VSCode与调试工具链的架构一致性:哪怕你安装的Go是arm64版本,只要VSCode本身或者调试工具delve是x86架构,运行在Rosetta转译模式下,就会触发这个报错。

二、分步修复步骤

  1. 确认VSCode架构
    打开VSCode顶部菜单栏「关于Visual Studio Code」,查看版本说明:如果标注为「Intel」,说明你装的是x86版本,卸载后重新下载Apple Silicon架构的安装包重装即可。
  2. 重装arm64版本的delve调试工具
    打开未开启Rosetta的终端,执行以下命令重新安装delve:
    GOARCH=arm64 go install github.com/go-delve/delve/cmd/dlv@latest
    
    安装完成后执行dlv version确认输出包含darwin/arm64即可。
  3. 修正launch.json配置
    补充编译标签参数,删除无效的host、port配置,最终配置参考如下:
    {
        "name": "Launch Package",
        "type": "go",
        "request": "launch",
        "mode": "debug",
        "program": "cmd/server/",
        "buildFlags": "-tags=jsoniter"
    }
    
  4. 额外排查项
    右键你常用的终端应用,点击「显示简介」,确认「使用Rosetta打开」选项没有勾选,否则所有终端执行的命令都会走转译,也会触发架构错误。

三、备选调试方案

如果IDE调试暂时无法修复,可以直接使用dlv命令行调试,操作步骤如下:

  • 终端执行命令启动调试服务:
    dlv debug --build-flags="-tags=jsoniter" cmd/server/main.go
    
  • 启动后输入b 文件名:行号添加断点,输入c继续运行程序,之后用Postman调用API即可命中断点,常用命令包括n(单步跳过)、s(单步进入)、p 变量名(打印变量值),完全可以替代IDE调试的核心功能。

内容的提问来源于stack exchange,提问作者Duy Bui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:06:00