使用 dlv 调试“go get”

问题描述

我想使用 go get 在模块感知模式下调试 dlv。假设我在 /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,我需要在我想要更新的模块中.所以问题是:如何使用 go get 调试特定模块的 dlv

解决方法

根据 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 …

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...