2013-07-16 54 views
3

我只是想知道是否有办法让我的应用程序只输出堆栈跟踪的例程恐慌(并随后死亡),而不是我所有的goroutines因为它们中有相当多的。golang:堆栈当程序崩溃时跟踪单个例程

我会假设有一些形式的标志,我可以通过去跑或去建立这样做,但似乎无法找到它。

任何帮助表示赞赏。

+0

我不知道任何标志来控制。因为这个恐慌程序(应该是)是第一个放弃或忽略其余的小事,或者? – Volker

+0

现在我无法写出完整的答案,但您应该可以通过恢复,打印您的堆栈和再次恐慌来做到这一点。 – thwd

+0

@Tom的意思是,我认为,你应该在恐慌中捕捉主要的恐慌情绪,以防止恐慌。 – joshlf

回答

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 
} 
相关问题