我正在调试一个包含很多似乎死锁的 goroutines 的 go 程序。
我想在它卡住时有一个堆栈跟踪。但是输出很长,不适合我的终端缓冲区。所以我想把它输出到一个文件中。但是,如果我将 stderr 输出到文件,我无法(轻松地)检测到它何时卡住。
我希望 tee
适合这个:
去测试 ./foo -v |& tee log.txt
但是,当我按下 Ctrl
+ Alt
+ \
时,终端或文件中均未显示任何堆栈跟踪输出。不知何故,它似乎无法通过 tee
的旅程。
有更好的方法吗?
最佳答案
根据 Mark Plotnick 的评论,在 tee
工作之前捕获 SIGQUIT
信号(至少对我而言):
去测试 ./foo -v |& { trap ""3;开球日志.txt; }
关于multithreading - 具有分层输出的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46500600/