繁体   English   中英

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

[英]How to debug a multithreaded hung process in Linux?

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

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

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

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

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

很可能其他人已经在追踪这个过程。 要了解谁在做它,请查看proc文件系统。

cat /proc/6026/status|grep TracerPid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM