gpt4 book ai didi

docker - 使用 Go 和 GoLand IDE 远程调试 HTTP 请求

转载 作者:IT王子 更新时间:2023-10-29 01:53:59 29 4
gpt4 key购买 nike

我是 go、delve 和 GoLand IDE 的新手。我想远程调试一些使用 make 部署并在 docker 中运行的 REST 端点(使用 docker + docker-compose)。

我用来启动我的环境的命令是make myproject

我的端点托管在:localhost:8080

在 GoLand 中创建调试配置时,它指定在运行之前dlv debug --headless --listen=:2345 --api-version 2,执行以下操作:

go build -gcflags='-N -l' github.com/myproject
dlv --listen=:2345 --headless=true --api version=2 exec ./myproject

一旦我的项目在 localhost:8080 上运行,我有没有办法附加到我的项目?如果是这种情况,这些命令将有何不同?

提前致谢

最佳答案

此命令 dlv debug --headless --listen=:2345 --api-version 2 your/package/name允许 delve 编译包,然后启动自身和编译后的二进制文件。

另一方面,这些命令
go build -gcflags='-N -l' github.com/myproject
dlv --listen=:2345 --headless=true --api version=2 exec ./myproject
向您展示您可以单独编译二进制文件,以防您需要更大的灵 active ,然后启动调试器。请记住,添加 -gcflags='-N -l' 非常重要或 -gcflags='all=-N -l' ,这取决于您拥有的 Go 版本,以便调试器能够获得有关您的应用程序的更多可用数据。

至于:

Is there a way for me to attach to my project once it's running on localhost:8080? How will these commands differ if that is the case?

这取决于您在哪里运行进程。如果它直接在你的机器上,没有 VM 或容器,那么 IDE 有 Run|Attach to Process 中的选项。 .如果该进程在不同的机器上运行,那么您需要登录到该机器并使用 dlv --headless --listen=:2345 --api-version 2 attach <pid> .

我们发表了an article几个月前专门针对这个问题,请查看它以获得更详细的答复。

关于docker - 使用 Go 和 GoLand IDE 远程调试 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50931798/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com