我只是想知道是否有办法让我的 go 应用程序只输出恐慌(并随后死亡)的例程的堆栈跟踪,而不是我的所有 goroutine,因为它们有很多。
我会假设我可以传递某种形式的标志来运行或构建来执行此操作,但似乎找不到它。
任何帮助表示赞赏。
我只是想知道是否有办法让我的 go 应用程序只输出恐慌(并随后死亡)的例程的堆栈跟踪,而不是我的所有 goroutine,因为它们有很多。
我会假设我可以传递某种形式的标志来运行或构建来执行此操作,但似乎找不到它。
任何帮助表示赞赏。
我可能会尝试(未测试)在延迟函数中使用runtime.Stack,同时修改(出于调试目的)现有代码以进行调试:
const debug = true //TODO turn off for production
func MyPotentiallyPanickingGoroutine() {
if debug {
buf := make([]byte, 1<<16)
defer func() {
fmt.Printf("%s\n", runtime.Stack(buf, false))
}()
}
// existing code follows
}