拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Delve 安装完全指南:go install、二进制发布包与 macOS 注意事项

Delve 安装完全指南go install、二进制发布包与 macOS 注意事项【免费下载链接】delveDelve is a debugger for the Go programming language.项目地址: https://gitcode.com/gh_mirrors/de/delveDelve 是 Go 语言的调试器项目主页见仓库根目录 README.md主程序入口位于 cmd/dlv/main.go。本文基于仓库官方安装文档 Documentation/installation/README.md 展开系统讲解在 Linux、macOS、Windows 与 FreeBSD 上安装dlv的全部可行路径包括go install、二进制发布包校验、源码编译以及 macOS 平台特有的开发者模式与自签名证书问题。读完本文你将能够根据自身环境选择最合适的安装方式、定位并解决常见的安装报错并理解安装链路背后的源码实现。安装前的环境要求官方安装指引明确说明以下安装步骤在Linux、macOS、Windows 和 FreeBSD上均已知可用唯一硬性前提是Go 版本不低于 1.16。检查 Go 版本运行go version确认版本号。本文仓库的 go.mod 声明模块为github.com/go-delve/delve最低 Go 版本要求为go 1.25.0指构建 Delve 自身所需的 Go 版本安装dlv二进制对使用者的 Go 版本要求以 Documentation/installation/README.md 为准即 1.16 及以上。dlv可执行文件通过go install安装到 Go 工具链约定的目录优先使用$GOBIN未设置时使用$GOPATH/bin。这一点可以从构建脚本 _scripts/make.go 中的installedExecutablePath()函数得到源码级印证——它先读取GOBIN环境变量否则解析go env GOPATH并拼接bin/dlv。方式一使用 go install 安装推荐在 Go 1.16 及以上版本中go install支持以moduleversion形式直接安装指定版本的二进制无需先克隆仓库。Delve 官方提供了三种粒度# 安装最新发布版本 $ go install github.com/go-delve/delve/cmd/dlvlatest # 安装 master 分支最新提交tree head $ go install github.com/go-delve/delve/cmd/dlvmaster # 安装指定版本或伪版本pseudo-version $ go install github.com/go-delve/delve/cmd/dlvv1.7.3 $ go install github.com/go-delve/delve/cmd/dlvv1.7.4-0.20211208103735-2f13672765fe几点说明安装包路径固定为github.com/go-delve/delve/cmd/dlv与仓库 cmd/dlv 目录一致该目录下的 main.go 是dlv程序的真正入口。latest会解析为 Delve 最新的语义化版本标签master对应主分支的最新提交适合希望使用未发布功能的情况。具体版本号与伪版本的格式规则可参考 Go 模块官方文档中关于Versions与Pseudo-versions的说明原文档提供外部链接此处仅提示格式要点版本号形如vX.Y.Z伪版本形如vX.Y.Z-0.yyyymmddhhmmss-abcdefabcdef由提交时间与提交哈希组成。安装完成后可用dlv version验证输出格式与版本号定义可参考 pkg/version/version.go——当前仓库版本为1.27.1该文件通过Version.String()输出Version: X.Y.Z与Build:git 提交 SHA。构建时注入的 Build SHA 由 _scripts/make.go 的buildFlags()通过-ldflags -X main.Build...完成最终由 cmd/dlv/main.go 写入version.DelveVersion.Build。方式二下载预编译二进制发布包对于不想安装 Go 工具链、或希望开箱即用的用户Delve 为Linux、macOS 和 Windows提供预编译二进制包发布在项目的 GitHub Releases 页面。使用方法进入 Releases 页面下载对应平台的压缩包解压归档将解压出的dlv可执行文件放入你的$PATH目录中例如/usr/local/bin。使用 cosign 校验发布包完整性从 v1.7 时代起Delve 的发布流程会在 GitHub Actions 中对 checksum 文件进行签名官方推荐使用 cosign 完成两级校验先验证签名文件本身同时校验签名与签名者身份再核对归档与校验和一致# 验证带签名的校验和文件同时校验签名和签名者身份 cosign verify-blob \ --certificate checksums.txt.cert \ --signature checksums.txt.sig \ --certificate-identity-regexp https://github.com/go-delve/delve/.github/workflows/release.ymlrefs/tags/.* \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ checksums.txt # 校验你的归档与校验和匹配 sha256sum -c --ignore-missing checksums.txt执行上述命令前请先下载checksums.txt、checksums.txt.sig与checksums.txt.cert三个文件它们与平台归档一同发布。--certificate-identity-regexp与--certificate-oidc-issuer是 cosign 校验签名者身份的必要参数应与发布工作流的实际配置保持一致。方式三从源码构建安装若希望自行编译、参与开发或需要交叉编译可以克隆仓库后构建$ git clone https://github.com/go-delve/delve $ cd delve $ go install github.com/go-delve/delve/cmd/dlvgo install会把编译产物保存到GOBIN或GOPATH/bin具体细节可用go help install查看。使用 Makefile 构建与卸载仓库根目录的 Makefile 提供了更完整的构建入口其底层委托给 _scripts/make.gomake build构建dlv。当显式指定了--GOOS/--GOARCH交叉编译参数或环境中不存在goreleaser时退化为直接go build否则默认使用goreleaser build --single-target --snapshot生成./dlv见 _scripts/make.go 的build命令实现。make install等价于执行go install并在 macOS 上检测CERT环境变量后对产物进行 codesigncodesign -s $CERT ./dlv。make uninstall通过go clean -i github.com/go-delve/delve/cmd/dlv移除已安装的二进制。make check-cert检查/生成 macOS 签名证书详见下文 macOS 小节。make test、make vet分别运行测试与静态检查测试子命令支持-s测试集、-r正则筛选、-b后端、-m构建模式等参数。构建时若指定--GOOS与--GOARCH即可完成交叉编译例如为其他平台产出二进制此外构建脚本还支持--tags附加构建标签与-G/--no-git禁用 git 信息注入等参数。安装报错排查操作系统与 CPU 架构不支持若安装go install阶段出现形如下面的错误found packages native (proc.go) and your_operating_system_and_architecture_combination_is_not_supported_by_delve (support_sentinel.go) in /home/pi/go/src/github.com/go-delve/delve/pkg/proc/native含义非常明确你当前的「操作系统 × CPU 架构」组合不受 Delve 原生后端支持。此时应运行go version查看当前组合并更换到受支持的平台。这条错误的根源可以在源码中找到pkg/proc/native/support_sentinel.go 通过构建约束//go:build !linux !darwin !windows !freebsd声明了一个名为your_operating_system_is_not_supported_by_delve的包而 pkg/proc/native 目录下真正的后端实现按平台拆分例如 proc_linux.go、proc_freebsd.go、proc_windows.go 与 proc_darwin.go。当 GOOS 不在这四个平台之列时编译器会同时看到proc.go依赖具体平台实现与 sentinel 占位包从而报出同时发现两个包的冲突错误。另外需要注意macOS 上还存在 nonative_darwin.go它意味着 macOS 默认并不使用原生后端native backend详见下文 macOS 小节。macOS 平台安装注意事项在 macOS 上安装和使用 Delve 有额外的系统级前置条件。安装命令行开发者工具首次使用前务必安装 Command Line Developer Tools$ xcode-select --install开发者模式Developer Mode如果你没有通过 Xcode 开启 Developer Mode那么每次使用调试器都会被系统询问授权。开启 Developer Mode 后只需每次登录会话授权一次sudo /usr/sbin/DevToolsSecurity -enable可能还需要将当前用户加入 developer 组sudo dscl . append /Groups/_developer GroupMembership $(whoami)Homebrew 安装macOS 专属捷径macOS 用户还可以通过 Homebrew 直接安装 Delve详见 Documentation/installation/osx/install.md$ brew install delve其他安装方法则与通用流程一致。编译 macOS 原生后端native backend需要特别说明的是macOS 上默认并不使用原生后端该后端存在已知问题。从源码看pkg/proc/native/nonative_darwin.go 的存在使 macOS 默认走 LLDB 后端见 _scripts/make.go 中defaultBackend()runtime.GOOS darwin时返回lldb。如果你仍然希望构建原生后端按以下步骤操作运行xcode-select --install在 macOS 10.14 上手动安装旧版头文件/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg将仓库克隆到$GOPATH/src/github.com/go-delve/delve在该目录下运行make install在某些 macOS 版本上首次运行需要 root 权限用于安装新证书。自签名证书的自动生成机制make install之所以在 macOS 上需要 root是因为构建流程会自动创建并安装一个自签名代码签名证书用于对dlv可执行文件签名macOS 要求调试器具备task_for_pid权限。证书的生成逻辑位于 _scripts/gencert.sh其工作流程为检查系统钥匙串中是否已存在dlv-cert存在则直接退出使用openssl生成 RSA 2048 位、SHA-512、有效期 3650 天的自签名证书扩展字段包含digitalSignature与codeSigning通过sudo security add-trusted-cert将证书安装为受信任根证书并用sudo security import导入私钥重启taskgated守护进程sudo pkill -f /usr/libexec/taskgated使证书即时生效。而 _scripts/make.go 中的checkCert()会在 macOS 且未设置CERT环境变量时自动调用该脚本并把CERT设为dlv-certcanMacnative()则会额外验证仅在darwin/amd64、CGO_ENABLED1且存在对应 SDK 的sys/types.h头文件时才会注入macnative构建标签并对产物执行 codesign。这套机制解释了为什么 macOS 原生后端构建第一次需要 root、为什么需要命令行工具。各平台安装文档速览官方在安装目录下按平台拆分了几份补充文档其中部分内容与通用指南保持一致Documentation/installation/linux/install.md内容指向通用安装指南Linux 用户直接采用本文前三种方式即可。Documentation/installation/freebsd/install.md同样指向通用安装指南。Documentation/installation/windows/install.md同样指向通用安装指南。Documentation/installation/osx/install.md额外提供 Homebrew 安装方式brew install delve其余方法与通用指南一致。完整的文档体系索引见 Documentation/README.md安装完成后的下一步可以阅读 Documentation/usage 了解dlv debug、dlv exec、dlv attach、dlv trace等子命令的用法或通过 Documentation/cli/README.md 查看命令行参数全集。安装完成后的验证安装完成后建议执行以下验证$ dlv version输出应包含类似Version: 1.27.1与Build: git-sha的信息版本号随发布版本变化。随后可以创建一个简单的 Go 程序用dlv debug ./main.go验证调试器能否正常启动并命中断点——这也将顺带检验 macOS 开发者模式与签名配置是否生效。若在 macOS 上出现授权弹窗说明 Developer Mode 尚未正确开启请回到上文对应的配置步骤。【免费下载链接】delveDelve is a debugger for the Go programming language.项目地址: https://gitcode.com/gh_mirrors/de/delve创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门