无法在 Mac 上安装 Delve Go 调试器

HML*_*ude 5 debugging bash go delve

我正在尝试观看以下有关 Go 调试入门的YouTube视频

它建议遵循官方 Delve github 存储库上的 Delve 安装说明。对于 Mac 用户,它们如下

确保工具链到位

xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Run Code Online (Sandbox Code Playgroud)

使用“go get”安装 Delve

go get -u github.com/go-delve/delve/cmd/dlv
Run Code Online (Sandbox Code Playgroud)

确保在 Xcode 中启用了开发者模式

sudo /usr/sbin/DevToolsSecurity -enable
Developer mode is already enabled.
Run Code Online (Sandbox Code Playgroud)

为了检查安装是否正确完成,我尝试在我的 Go 项目中直接运行以下命令:

dlv debug
zsh: command not found: dlv
Run Code Online (Sandbox Code Playgroud)

视频教程作者建议在~/.bash_profile无法识别命令的情况下更新文件中的GOPATH和PATH变量。我这样做是通过添加:

export GOPATH=/Users/<user_name>/go/src/
export PATH=$PATH:/Users/<user_name/go/src/my_project
Run Code Online (Sandbox Code Playgroud)

但是,即使这样做之后,我在尝试运行调试器时也会得到相同的结果:

dlv debug
zsh: command not found: dlv
Run Code Online (Sandbox Code Playgroud)

即使我将默认 zsh 的 shell 更改为 bash,使用exec bash,我也会得到相同的结果。

Nic*_*rin 12

为了运行可执行文件,它需要在您的PATH.

1. 配置您的路径。

确保您的GOPATH$GOPATH/bin目录在您的 shell 环境中正确设置。您可以通过将以下几行添加到您的 shell 配置中来做到这一点。

~/.zshrc如果您正在使用zsh.

~/.bash_profile如果您正在使用bash.

export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

2. 重新加载您的外壳配置。

确保source在更改后重新启动 shell 或在 shell 配置文件上运行:

source ~/.zshrc如果您正在使用zsh.

source ~/.bash_profile如果您正在使用bash.


3. 安装dlv包。

go install github.com/go-delve/delve/cmd/dlv
Run Code Online (Sandbox Code Playgroud)

这是假设您正在使用/Users/<username>/go作为您的GOPATH.


您现在应该可以dlv从终端会话中运行了。

祝你好运!


has*_*sen 5

设置环境变量GOBIN是你想要的dlv要安装二进制文件。

例如:

GOBIN=~/bin go install github.com/go-delve/delve/cmd/dlv
Run Code Online (Sandbox Code Playgroud)

这将在 ~/bin 中安装 dlv

澄清

运行时go install,可以通过设置GOBIN环境变量来指定安装路径。

设置环境变量有两种方式:

1)跑export GOBIN=<SOMETHING>前跑go install ..

$ export GOBIN="$HOME/bin"
$ go install github.com/go-delve/delve/cmd/dlv
Run Code Online (Sandbox Code Playgroud)

export 命令将改变当前终端会话中的环境。您稍后执行的任何命令都将看到您设置的值GOBIN

当您采用这种方法时,您通常希望不仅在此会话中而且在所有以后的会话中都使此环境变量处于活动状态。所以最好将该行添加到您的 bash 配置文件中。

2) 仅为命令设置环境变量。

$ A=10 some-command
Run Code Online (Sandbox Code Playgroud)

在这种情况下,some-command将看到环境变量的值A设置为“10”。如果您稍后运行命令,它将看不到此值。

当您只是尝试一下,或者您只想在某些情况下设置某些环境变量时,这种方法很有用。

我作为答案提供的命令行遵循第二种方法。

它将 GOBIN 变量设置为~/bin目录,然后go install在同一行中调用。这样,这个调用go install将安装 dlv~/bin

这当然假设您的bin主目录中有一个目录。

如果您没有这样的目录,那么这将不起作用。

这个想法不是按原样复制粘贴行。这个想法是更改~/bin为您希望dlv安装二进制文件的目录。