Golang Go语言如何远程调试服务

发布于 1周前 作者 gougou168 来自 Go语言

golang 如何远程调试服务,比如排 bug 、程序泄漏等,向大佬们取取经
Golang Go语言如何远程调试服务

10 回复

字节开源了一共工具 类似于 althas

更多关于Golang Go语言如何远程调试服务的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Goland 不是有远程编译和调试.

如果程序允许暂停,直接 ssh 连接上去用 delve debug 。但是大部分 bugs 通过 tracing ,logging 这些中间件,配合 pprof 已经可以诊断的比较好了,需要考虑你的服务是否已经支持了这些组件。

另外,可以尝试在本地环境复现问题,也是一个好的思路,不一定直接在远程(生产环境)的服务操作

github.com/go-delve/delve
在 dockerFile 里:
RUN go install github.com/go-delve/delve/cmd/[email protected]
# 构建 Go 应用程序
RUN go build -gcflags="-N -l" -o test .
# 声明服务端口
EXPOSE 8080 2345
# 指定容器启动命令
CMD [“dlv”, “–listen=:2345”, “–headless=true”, “–api-version=2”, “exec”, “./test”]
远程上启动后在 goland 里配置下 go remote 就行了

得看你们的业务复杂度以及架构模式。如果是 N 个微服务链路,本地起 N 个服务用生产的环境配置去定位问题,那也很痛苦,何况 N 个服务可能有 java 有 go 有 其他的玩意。。最好的办法还是做好链路追踪以及 pprof 或者 dlv

如果涉及到多个服务,那肯定要记录链路跟踪日志,这样方便定位问题。

https://t.me/+zvdA2a7KiMI3NmVl 全栈开发者交流群

一般服务器运行的 go 可执行文件都是编译优化和裁剪过的吧,不能直接调试。

楼上说的 dlv 支持本地和远程调试

大佬,搜不到 go 的,可否说下名称

在Golang(Go语言)中,远程调试服务是一项强大的功能,可以帮助开发者在开发环境中高效地排查和修复问题。以下是实现远程调试服务的基本步骤:

  1. 安装Delve调试器: Delve是Go语言的官方调试器,支持本地和远程调试。首先,确保你已经在本地安装了Delve。可以通过运行go get -u github.com/go-delve/delve/cmd/dlv来安装。

  2. 编译程序并启用调试信息: 使用go build -gcflags "all=-N -l"编译你的程序,这样可以保留足够的调试信息。

  3. 启动远程调试服务器: 在你的服务器上,使用Delve启动远程调试服务器。例如,dlv --listen=:2345 --headless=true --api-version=2 exec ./your_program。这里,2345是调试服务器监听的端口,你可以根据需要更改。

  4. 连接到远程调试服务器: 在你的本地开发环境中,使用Delve客户端连接到远程调试服务器。例如,dlv connect <server_ip>:2345

  5. 进行调试: 一旦连接成功,你就可以使用Delve提供的各种调试命令(如continuestepbreak等)来调试你的程序了。

请注意,远程调试涉及网络通信,因此确保你的服务器和本地开发环境之间的网络是通畅的。此外,出于安全考虑,调试端口不应暴露给不受信任的网络。

希望这些信息能帮助你顺利实现Go语言的远程调试。

回到顶部