如何在Linux中debuggingmultithreading的挂起进程?

multithreading应用程序挂起,它不响应任何命令。 我已经尝试过下面的事情没有运气:

  1. 将进程附加到gdb(错误:(gdb)附加6026附加到进程6026 ptrace:不允许操作。
  2. gstack(gstack就这样挂起来)

有没有什么好的方法来debugging这个过程?

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

从堆栈跟踪中,文件系统将代表应用程序进程的等待事件发布到其他进程(处于不可用状态)并等待响应。 这导致挂起状态。

很可能有其他人正在追踪这个过程。 要找出谁在做什么,看看proc文件系统。

 cat /proc/6026/status|grep TracerPid