Golang Go语言如何远程调试服务
golang 如何远程调试服务,比如排 bug 、程序泄漏等,向大佬们取取经
Golang Go语言如何远程调试服务
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语言)中,远程调试服务是一项强大的功能,可以帮助开发者在开发环境中高效地排查和修复问题。以下是实现远程调试服务的基本步骤:
-
安装Delve调试器: Delve是Go语言的官方调试器,支持本地和远程调试。首先,确保你已经在本地安装了Delve。可以通过运行
go get -u github.com/go-delve/delve/cmd/dlv
来安装。 -
编译程序并启用调试信息: 使用
go build -gcflags "all=-N -l"
编译你的程序,这样可以保留足够的调试信息。 -
启动远程调试服务器: 在你的服务器上,使用Delve启动远程调试服务器。例如,
dlv --listen=:2345 --headless=true --api-version=2 exec ./your_program
。这里,2345
是调试服务器监听的端口,你可以根据需要更改。 -
连接到远程调试服务器: 在你的本地开发环境中,使用Delve客户端连接到远程调试服务器。例如,
dlv connect <server_ip>:2345
。 -
进行调试: 一旦连接成功,你就可以使用Delve提供的各种调试命令(如
continue
、step
、break
等)来调试你的程序了。
请注意,远程调试涉及网络通信,因此确保你的服务器和本地开发环境之间的网络是通畅的。此外,出于安全考虑,调试端口不应暴露给不受信任的网络。
希望这些信息能帮助你顺利实现Go语言的远程调试。