使用 dlv 调试 "go get"

Debug "go get" with dlv

我想使用 dlv 在模块感知模式下调试 go get。假设我在 /some/dir/mymod 有一个 go 模块。要在模块感知模式下使用 go get,我必须执行以下操作

$ cd /some/dir/mymod
$ go get

但是如果我想用 dlv 调试 go 命令本身,我必须执行以下操作

$ cd /usr/local/go/src/cmd/go
$ dlv debug -- get [some args here]

如您所见,为了使用 dlv 我需要在我想要调试的模块中,但是为了使用 go get 我需要在我想要的模块中更新。所以问题是:如何使用 dlv?

为特定模块调试 go get

根据 https://github.com/go-delve/delve/blob/master/Documentation/usage/dlv_debug.mddlv debug 导致 Delve“编译并开始调试当前目录中的主包,或指定的包”(强调我的).

所以你应该能够做到:

cd /some/dir/mymod
dlv debug cmd/go -- get …

或者也许

cd /some/dir/mymod
dlv debug $(go env GOROOT)/src/cmd/go -- get …