golang:当程序崩溃时,堆栈跟踪单个例程



我只是想知道是否有办法让我的go应用程序只输出恐慌(随后死亡)的例程的堆栈跟踪,而不是我的所有goroutine,因为它们有很多。

我假设有某种形式的标志,我可以通过它来运行或构建,但似乎找不到它

感谢您的帮助。

我可能会尝试(而不是测试)使用运行时。在修改(用于调试目的)现有代码以用于调试目的时,在延迟函数中堆叠:

const debug = true //TODO turn off for production
func MyPotentiallyPanickingGoroutine() {
        if debug {
            buf := make([]byte, 1<<16)
            defer func() {
                    fmt.Printf("%sn", runtime.Stack(buf, false))
            }()
        }
        // existing code follows
}

最新更新