V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ericcen
V2EX  ›  Go 编程语言

golang 如何远程调试服务

  •  
  •   ericcen · 72 天前 via iPhone · 1922 次点击
    这是一个创建于 72 天前的主题,其中的信息可能已经有所发展或是发生改变。
    golang 如何远程调试服务,比如排 bug 、程序泄漏等,向大佬们取取经
    9 条回复    2024-08-24 11:16:22 +08:00
    xingjue
        1
    xingjue  
       72 天前   ❤️ 1
    字节开源了一共工具 类似于 althas
    KaynW
        2
    KaynW  
       72 天前   ❤️ 1
    Tanglok
        3
    Tanglok  
       72 天前
    Goland 不是有远程编译和调试.
    griffinx
        4
    griffinx  
       72 天前   ❤️ 1
    如果程序允许暂停,直接 ssh 连接上去用 delve debug 。但是大部分 bugs 通过 tracing ,logging 这些中间件,配合 pprof 已经可以诊断的比较好了,需要考虑你的服务是否已经支持了这些组件。

    另外,可以尝试在本地环境复现问题,也是一个好的思路,不一定直接在远程(生产环境)的服务操作
    xiaozirun
        5
    xiaozirun  
       72 天前   ❤️ 2
    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 就行了
    aw2350
        6
    aw2350  
       72 天前   ❤️ 2
    得看你们的业务复杂度以及架构模式。如果是 N 个微服务链路,本地起 N 个服务用生产的环境配置去定位问题,那也很痛苦,何况 N 个服务可能有 java 有 go 有 其他的玩意。。最好的办法还是做好链路追踪以及 pprof 或者 dlv
    ny562kPWNJK9g86f
        7
    ny562kPWNJK9g86f  
       72 天前
    如果涉及到多个服务,那肯定要记录链路跟踪日志,这样方便定位问题。

    https://t.me/+zvdA2a7KiMI3NmVl 全栈开发者交流群
    Martens
        8
    Martens  
       72 天前   ❤️ 1
    一般服务器运行的 go 可执行文件都是编译优化和裁剪过的吧,不能直接调试。

    楼上说的 dlv 支持本地和远程调试
    ericcen
        9
    ericcen  
    OP
       71 天前 via iPhone
    @xingjue 大佬,搜不到 go 的,可否说下名称
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:34 · PVG 20:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.