The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
firecode

golang http server 如果出现功能不正常,或者报错,你们是怎么定位问题的呢

  •  
  •   firecode · Jul 8, 2022 · 3459 views
    This topic created in 1579 days ago, the information mentioned may be changed or developed.
    目前我已知的方法有以下几种:
    1. 标准库的 log 包设置 Llongfile ,打日志的时候能够定位到代码行
    2. 使用一些特殊字段,能够唯一标记这个日志是哪个函数的哪一行,比如用 函数名+具体 的方式
    3. panic 然后 recover ,再打印堆栈
    18 replies  •  2022-07-18 03:30:18 +08:00
    GeruzoniAnsasu
    GeruzoniAnsasu
    Jul 8, 2022
    1
    只要这个程序(或 docker container )能在本机上跑得起来,我一定会首先尝试 dlv
    firecode
    firecode
    OP
    Jul 8, 2022
    2
    @GeruzoniAnsasu 不能本地跑呢,线上的,直接从日志定位问题,而不是在本地复现
    kingofzihua
    kingofzihua
    Jul 8, 2022
    3
    可以用下 sentry
    firecode
    firecode
    OP
    Jul 8, 2022
    4
    @kingofzihua 就算用了 sentry ,我也需要从报错信息直接定位到代码行呀
    kingofzihua
    kingofzihua
    Jul 8, 2022
    5
    @firecode 有调用栈啊
    nmap
    nmap
    Jul 8, 2022
    6
    报错信息搜代码?
    realpg
    realpg
    Jul 8, 2022
    7
    所有请求都短暂保存 干啥就不能本地复现了?
    keepeye
    keepeye
    Jul 8, 2022
    8
    使用带堆栈信息的第三方 error 包,比如 GoFrame 框架的 gerror
    PlG5sBkXD1ziLeGB
    PlG5sBkXD1ziLeGB
    Jul 8, 2022 via iPhone
    9
    go 这么多 if err != nil , 都报错了,还不能定位问题?
    firecode
    firecode
    OP
    Jul 8, 2022
    10
    @keepeye 不想引用第三方的东西,单纯想知道怎么实现定位
    firecode
    firecode
    OP
    Jul 8, 2022
    11
    @yyf1234 抛到最上层,你知道是哪个位置抛的错误吗
    janxin
    janxin
    Jul 8, 2022
    12
    @firecode 不想用第三方的可以自己实现一个
    charmToby
    charmToby
    Jul 8, 2022
    13
    有链路追踪,然后接口响应里,会返回错误堆栈信息,直接显示哪一行什么错。
    QingXuJiaZhi
    QingXuJiaZhi
    Jul 8, 2022
    14
    根据 Go 官方统计,用 fmt.Println 的人最多。
    EminemW
    EminemW
    Jul 8, 2022
    15
    打日志,用这个拿调用栈 https://pkg.go.dev/runtime#example-Frames
    eudore
    eudore
    Jul 11, 2022
    16
    src/net/http/server.go 里面加上一个 fmt 就好了,一般情况 server 是没有异常,都是应用错误;应用错误 recover 加上堆栈输出就有了。
    Trim21
    Trim21
    Jul 18, 2022 via Android
    17
    每一层返回错误的时候都要用 fmt.Errorf 包一下,要么就在最底层用带 trackback 的 GitHub/pkg/errors 包 Wrap 一下。
    Trim21
    Trim21
    Jul 18, 2022 via Android
    18
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5405 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 01:56 · PVG 09:56 · LAX 17:56 · JFK 20:56
    ♥ Do have faith in what you're doing.