You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
p/go-env-gotraceback/
近期迁移了一个 go 的项目至 k8s 机器上,发现机器不时会自动重启,当想看重启前日志的时候,Goroutine 运行的状态全部都打印了出来,由于公司云平台查看行数限制,看到最后,还是没有想要看到的 panic 的关键堆栈信息。\n前期,由于频繁的重启,怀疑是哪里出现了未捕获的 panic 导致的,于是在使用的第三方包 RocketMQ 和 Talos 等 SDK 包进行了生产消费初始化的 recover 并且对项目中 channel 的关键操作中也添加了 recover 捕获,但是并没有解决问题,还是时不时的出现重启。\n在查找 Go 官方文档,发现可以设置这个环境变量 GOTRACEBACK 可以控制 panic 发生后堆栈跟踪的打印级别。\nGOTRACEBACK Go 运行时使用该环境变量来决定在程序崩溃或出现未处理的 panic 时应该输出多少堆栈跟踪信息,它是在运行 Go 程序时通过环境变量传递给 Go 运行时的。\nnone 当程序崩溃时,不输出任何堆栈信息; single 仅显示导致崩溃,出现 panic 的 goroutine 的堆栈信息; all 显示所有的 goroutine 的堆栈信息; system 显示所有的 goroutine 的堆栈信息,包括运行时内部 goroutine 的信息; crash 显示所有的 goroutine 的堆栈信息,然后核心转储程序并退出; runtime package - runtime - Go Packages\n
https://blog.debuginn.com/p/go-env-gotraceback/
Beta Was this translation helpful? Give feedback.
All reactions