如何在Linux中调试多线程挂起进程?

Tha*_*raj 5 c linux multithreading linux-kernel

多线程应用程序挂起,它没有响应任何命令.我试过没有运气的事情:

  1. 将进程附加到gdb(错误:(gdb)attach 6026附加到进程6026 ptrace:不允许操作.)
  2. gstack(gstack只是像那样挂起)

有没有什么好方法可以调试这个过程?

Tha*_*raj 6

感谢您的回复.问题出在内核级别.我们使用了echo t>/proc/sysrq-trigger,它记录了/ var/log/messages中所有正在运行的进程的堆栈.此堆栈跟踪有助于分析问题.

从堆栈跟踪,文件系统代表应用程序进程将一些等待事件发布到其他进程(处于已关闭状态)并无限期地等待响应.这导致挂状态.