multithreading - 具有分层输出的堆栈跟踪

标签 multithreading debugging go dump tee

我正在调试一个包含很多似乎死锁的 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/

相关文章:

c++ - 使用互斥锁在 2 个进程之间进行屏障同步

arrays - Golang graphql 使用子图迭代 map

go - GO 语言的 ActiveDirectory/LDAP 身份验证客户端包?

go - 为什么我说 8 时 Golang 不给我 8 个字节?

linux - Pthread 互斥锁 Linux

c++ SIGABRT在多线程应用程序的结构析构函数中

c++ - 多线程 mex 代码比单线程慢

python - 源不可用时调试python字节码

perl - 如何在 Perl 上找到我有哪种类型的对象?

c++ - 如何打印以筛选结构及其所有内容?