我正在调试一个带有很多goroutine的go程序,似乎已经死锁。
我希望冻结时有一个堆栈跟踪。但输出很长,不适合我的终端缓冲区。所以我想把它输出到一个文件。但是,如果我将stderr输出到文件,我就不能(轻松)检测它何时冻结。
我预计tee
对此有好处:
go test ./foo -v |& tee log.txt
但是,当我点击Ctrl
+ Alt
+ \
时,终端或文件中都没有显示堆栈跟踪输出。不知何故,似乎它在tee
之旅中无法生存。
有更好的方法吗?
答案 0 :(得分:0)
根据Mark Plotnick的评论,在SIGQUIT
之前捕获tee
信号(至少对我而言):
go test ./foo -v |& { trap "" 3; tee log.txt; }