Debugging GoLand远程调试显示;找不到<;文件>&引用;

Debugging GoLand远程调试显示;找不到<;文件>&引用;,debugging,go,remote-debugging,goland,Debugging,Go,Remote Debugging,Goland,我试图调试一个运行在docker容器中的单文件Go应用程序,在容器中使用delve,在Mac笔记本上使用GoLand 当我运行本地调试器时,断点可以工作。当我使用“Go Remote”配置时,我的所有断点都变成了一个圆圈斜杠,并且注释上写着“找不到文件名” 我验证了我的源文件在服务器(容器)和客户机上与GOPATH的相对路径相同 我在容器中使用Go 1.12.5,并使用以下delve命令: dlv调试--headless--listen=:8044--api版本=2--接受多客户端 它正确地构建

我试图调试一个运行在docker容器中的单文件Go应用程序,在容器中使用delve,在Mac笔记本上使用GoLand

当我运行本地调试器时,断点可以工作。当我使用“Go Remote”配置时,我的所有断点都变成了一个圆圈斜杠,并且注释上写着“找不到文件名”

我验证了我的源文件在服务器(容器)和客户机上与GOPATH的相对路径相同

我在容器中使用Go 1.12.5,并使用以下delve命令:
dlv调试--headless--listen=:8044--api版本=2--接受多客户端

它正确地构建我的
src/github.com/flinkt/reverseProxy/reverseProxy.go
bin/reverseProxy
,并在收到预期的http请求时开始输出预期的消息

我的GoLand建筑是2019.1。配置命中localhost 8043,并且没有填充其他字段

docker容器正在通过装载源文件,因此我确信他们正在查看完全相同的源文件

项目配置在
src/
bin/
目录的正上方有一个内容根目录,该目录也被设置为项目路径。没有全局GOPATH,所有依赖项都位于
src/
树中。将选中索引所有内容的复选框


关于为什么我的IDE无法查看源代码或在断点处停止的建议?

我遇到了与您类似的情况

以下是我的设想:

  • 在远程机器上构建go二进制文件,但不使用GOPATH dir(使用go模块)
  • 在docker容器中运行,使用主机中的delve直接连接到docker容器pid
dlv--listen=:2345--headless=true--api version=2--accept multiclient attach$PID

  • 本地源代码位于GOPATH下,使用Mac笔记本电脑上的GoLand连接到远程delve服务器
  • 我可以看到Goroutine信息,但断点不起作用,说“找不到XXX”
解决方案:

在Goland设置中启用“Go模块集成”,它就可以工作了


也许我在构建时使用Go模块,Goland自己实现了delve客户端,所以我应该启用Goland Go模块集成,让Goland正确处理源代码路径

戈兰高地:2019.1.3,迪尔夫:1.2.0,围棋:1.12.4


希望这能对您有所帮助。

我建议在问题跟踪程序上创建一个记录单,以便在那里而不是在这里提供更多信息。