将delve调试器与go模块一起使用

将delve调试器与go模块一起使用,go,debugging,delve,Go,Debugging,Delve,看看这个目录结构: /root /bar go.mod go.sum main.go main_test.go /foo go.mod go.sum main.go main_test.go 我想从命令行使用delve调试器调试root/foo/main.go。我尝试使用go build构建二进制文件,然后使用dlv debug,错误如下: can't

看看这个目录结构:

/root
    /bar
        go.mod
        go.sum
        main.go
        main_test.go
    /foo
        go.mod
        go.sum
        main.go
        main_test.go
我想从命令行使用delve调试器调试root/foo/main.go。我尝试使用go build构建二进制文件,然后使用dlv debug,错误如下:

can't load package: package foo is not in GOROOT (/usr/local/opt/go/libexec/src/foo)
exit status 1
有什么想法吗?

您的根目录中有两个不同的模块,foo和bar。您不能使用根目录下的go build来构建它们,因为go build不支持嵌套或多个模块。您必须从go.mod所在的目录或其任何子目录运行它

由于Delve只是为您调用go build,因此dlv debug也是如此。尝试先将cd刻录到foo中,然后运行dlv debug。

我在正确的目录中进行了go构建,但由于某些原因,当我显式地为dlv提供构建的二进制文件时,它无法工作,可能与嵌套模块有关?。只需在我想要调试的模块中键入dlv debug即可,谢谢!