3

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

我会假设我可以传递某种形式的标志来运行或构建来执行此操作,但似乎找不到它。

任何帮助表示赞赏。

4

1 回答 1

0

我可能会尝试(未测试)在延迟函数中使用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
}
于 2013-07-16T08:18:38.320 回答