我正在尝试调试在docker容器中运行的单文件Go应用程序,在该容器中使用delve,并在Mac笔记本电脑上使用GoLand。
当我运行本地调试器时,我的断点起作用。当我使用“Go Remote”配置时,我所有的断点都变成一个斜线,并且注释显示“找不到FILENAME”。
我验证了我的源文件在服务器(容器)和客户端上的GOPATH相对路径是否相同。
我通过以下delve命令在容器中使用Go 1.12.5:dlv debug --headless --listen=:8044 --api-version=2 --accept-multiclient
它将我的src/github.com/flinkt/reverseProxy/reverseProxy.go
正确构建为bin/reverseProxy
,并在获取到期望的http请求时开始输出期望的消息。
我的GoLand版本是2019.1。该配置命中localhost 8043,并且没有其他字段被填写。
docker容器正在通过安装源,因此我确定他们正在查看完全相同的源文件。
项目配置的内容根目录位于src/
和bin/
目录的上方,并且也被设置为项目GOPATH。没有全局GOPATH,所有依赖项都在src/
树中。索引所有内容的复选框已选中。
关于为什么我的IDE无法看到我的源代码或无法在断点处停止的建议?
最佳答案
我也遇到过类似的情况。
这是我的情况:
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient attach $PID
解决方案:
在Goland设置中启用“Go模块集成” ,它可以工作!
也许我在构建时使用Go Module,而Goland自己实现了delve客户,所以我应该启用Goland Go Module集成,以使Goland正确对待源代码路径。
戈兰德:2019.1.3,钻探:1.2.0,戈:1.12.4
希望这会帮助你。
关于debugging - GoLand远程调试显示 “could not find <file>”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56273958/