1
GeruzoniAnsasu 2022-07-08 11:50:11 +08:00
只要这个程序(或 docker container )能在本机上跑得起来,我一定会首先尝试 dlv
|
2
firecode OP @GeruzoniAnsasu 不能本地跑呢,线上的,直接从日志定位问题,而不是在本地复现
|
3
kingofzihua 2022-07-08 14:06:08 +08:00
可以用下 sentry
|
4
firecode OP @kingofzihua 就算用了 sentry ,我也需要从报错信息直接定位到代码行呀
|
5
kingofzihua 2022-07-08 14:31:50 +08:00
@firecode 有调用栈啊
|
6
nmap 2022-07-08 15:04:04 +08:00
报错信息搜代码?
|
7
realpg 2022-07-08 15:13:09 +08:00
所有请求都短暂保存 干啥就不能本地复现了?
|
8
keepeye 2022-07-08 15:23:23 +08:00
使用带堆栈信息的第三方 error 包,比如 GoFrame 框架的 gerror
|
9
yyf1234 2022-07-08 15:27:09 +08:00 via iPhone
go 这么多 if err != nil , 都报错了,还不能定位问题?
|
13
charmToby 2022-07-08 17:42:59 +08:00
有链路追踪,然后接口响应里,会返回错误堆栈信息,直接显示哪一行什么错。
|
14
cmdOptionKana 2022-07-08 18:10:22 +08:00
根据 Go 官方统计,用 fmt.Println 的人最多。
|
15
EminemW 2022-07-08 23:03:22 +08:00
打日志,用这个拿调用栈 https://pkg.go.dev/runtime#example-Frames
|
16
eudore 2022-07-11 08:30:40 +08:00
src/net/http/server.go 里面加上一个 fmt 就好了,一般情况 server 是没有异常,都是应用错误;应用错误 recover 加上堆栈输出就有了。
|
17
Trim21 2022-07-18 03:27:35 +08:00 via Android
每一层返回错误的时候都要用 fmt.Errorf 包一下,要么就在最底层用带 trackback 的 GitHub/pkg/errors 包 Wrap 一下。
|
18
Trim21 2022-07-18 03:30:18 +08:00 via Android
|