golang 如何远程调试服务

ericcen · 2024-8-23 10:03:20 · 114 次点击
golang 如何远程调试服务,比如排 bug 、程序泄漏等,向大佬们取取经
举报· 114 次点击
登录 注册 站外分享
8 条回复  
Martens 初学 2024-8-23 17:42:27

golang 如何远程调试服务

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

楼上说的 dlv 支持本地和远程调试
TerrenceTian 小成 2024-8-23 15:32:08

golang 如何远程调试服务

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

https://t.me/+zvdA2a7KiMI3NmVl 全栈开发者交流群
aw2350 小成 2024-8-23 14:47:25

golang 如何远程调试服务

得看你们的业务复杂度以及架构模式。如果是 N 个微服务链路,本地起 N 个服务用生产的环境配置去定位问题,那也很痛苦,何况 N 个服务可能有 java 有 go 有 其他的玩意。。最好的办法还是做好链路追踪以及 pprof 或者 dlv
xiaozirun 小成 2024-8-23 14:28:43
用 github.com/go-delve/delve
在 dockerFile 里:
RUN go install github.com/go-delve/delve/cmd/dlv@v1.22.1
# 构建 Go 应用程序
RUN go build -gcflags="-N -l" -o test .
# 声明服务端口
EXPOSE 8080 2345
# 指定容器启动命令
CMD ["dlv", "--listen=:2345", "--headless=true", "--api-fersion=2", "exec", "./test"]
远程上启动后在 goland 里配置下 go remote 就行了
griffinx 小成 2024-8-23 13:35:12
如果程序允许暂停,直接 ssh 连接上去用 delve debug 。但是大部分 bugs 通过 tracing ,logging 这些中间件,配合 pprof 已经可以诊断的比较好了,需要考虑你的服务是否已经支持了这些组件。

另外,可以尝试在本地环境复现问题,也是一个好的思路,不一定直接在远程(生产环境)的服务操作
Tanglok 小成 2024-8-23 11:00:54
Goland 不是有远程编译和调试.
KaynW 小成 2024-8-23 10:17:44
github.com/go-delve/delve
xingjue 小成 2024-8-23 10:13:44
字节开源了一共工具 类似于 althas
返回顶部