【问题标题】:Cannot Install Delve Go Debugger on Mac无法在 Mac 上安装 Delve Go 调试器
【发布时间】:2020-03-25 09:47:11
【问题描述】:

我正在尝试跟随以下 YouTube video 开始使用 Go Debugging。

建议按照官方 Delve github repo 上的 Delve 安装说明进行操作。对于 Mac 用户,他们是as follows

确保工具链到位

xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

使用“go get”安装 Delve

go get -u github.com/go-delve/delve/cmd/dlv

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

sudo /usr/sbin/DevToolsSecurity -enable
Developer mode is already enabled.

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

dlv debug
zsh: command not found: dlv

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

export GOPATH=/Users/<user_name>/go/src/
export PATH=$PATH:/Users/<user_name/go/src/my_project

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

dlv debug
zsh: command not found: dlv

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

【问题讨论】:

    标签: bash debugging go delve


    【解决方案1】:

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

    1.配置您的路径。

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

    ~/.zshrc 如果您使用的是zsh

    ~/.bash_profile 如果您使用的是bash

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

    2。重新加载你的 shell 配置。

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

    source ~/.zshrc 如果您使用的是zsh

    source ~/.bash_profile 如果您使用的是bash


    3.安装dlv 包。

    go install github.com/go-delve/delve/cmd/dlv
    

    这是假设您使用/Users/&lt;username&gt;/go 作为您的GOPATH


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

    祝你好运!

    【讨论】:

    • 第二行末尾的分号有什么作用?
    • 按照您建议的步骤操作,包括分号和不分号。仍然得到相同的结果zsh: command not found: dlv
    • 抱歉,; 是一个错字。你可以把它排除在外。我将编辑帖子。
    • 运行go install后,是$GOPATH/bin里面的可执行文件吗?
    • 如果您已将$GOPATH/bin 添加到您的PATH,并且可执行文件位于$GOPATH/bin - 我不确定您为什么会遇到麻烦。您确定您正在编辑正确的 shell 配置吗?即.zshrc,如果你使用的是ZSH.bash_profile,如果你使用的是bash
    【解决方案2】:

    将环境变量 GOBIN 设置为您希望安装 dlv 二进制文件的位置。

    例如:

    GOBIN=~/bin go install github.com/go-delve/delve/cmd/dlv
    

    这将在 ~/bin 中安装 dlv

    澄清

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

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

    1) 在运行 go install .. 之前运行 export GOBIN=&lt;SOMETHING&gt;

    $ export GOBIN="$HOME/bin"
    $ go install github.com/go-delve/delve/cmd/dlv
    

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

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

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

    $ A=10 some-command
    

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

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

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

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

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

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

    我们的想法是不要照原样复制粘贴该行。想法是将~/bin 更改为您希望安装dlv 二进制文件的目录。

    【讨论】:

    • 我应该将其写为export GOBIN=~/... 还是按照您在我的source ~/.bash_profile 中列出的方式插入?
    • 你可以像我在这里展示的那样内联而不使用 export 关键字。如果您希望它始终被设置,那么您可以将其添加到您的 bash 配置文件中作为 export GOBIN=~/bin
    • 添加您的行后,使用export,然后运行source ~/.bash_profile,我收到以下错误消息:bash: export: `github.com/go-delve/delve/cmd/dlv': not a valid identifier
    • 定义“基本理解”?
    • 在您的 bash 配置文件中,仅输入 export GOBIN=~/bin。不要将go install .. 作为export 行的一部分。
    猜你喜欢
    • 2016-07-06
    • 2016-08-18
    • 2019-08-07
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2020-10-22
    • 2017-09-20
    相关资源
    最近更新 更多