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

时间:2013-07-16 07:59:23

标签: go stack-trace

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

我会假设有某种形式的旗帜,我可以通过它来运行或者去构建这样做,但似乎无法找到它。

感谢任何帮助。

1 个答案:

答案 0 :(得分: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
}