接下来是“如何将strace附加到ps输出中没有的进程中? ”中描述的问题。
我正在尝试调试部分挂起的进程。
通过strace -f
在父进程上使用,我可以确定我有一堆正在显示的线程:
# strace -p 26334
Process 26334 attached - interrupt to quit
epoll_wait(607, {}, 4096, 500) = 0
epoll_wait(607, {}, 4096, 500) = 0
epoll_wait(607, {}, 4096, 500) = 0
epoll_wait(607, {}, 4096, 500) = 0
epoll_wait(607, ^C <unfinished ...>
Process 26334 detached
进一步调查:
# readlink /proc/26334/fd/607
anon_inode:[eventpoll]
我的直觉告诉我,在僵局的情况下我已经设法获得了一些线程,但是我epoll
对前进的了解并不多。是否有任何命令可以使我对这些线程要轮询的内容或此epoll描述符映射到的文件描述符有一些了解。
运行strace
这些行时,它们返回的是系统功能。如果不很明显epoll_wait()
,您可以执行一个函数man epoll_wait
来查找实现细节,如下所示:
epoll_wait, epoll_pwait - wait for an I/O event on an epoll file descriptor
的描述epoll
:
epoll API执行与poll(2)类似的任务:监视多个文件描述符以查看其中的任何文件是否可以进行I / O。epoll API可以用作边缘触发或级别触发的接口,并且可以很好地扩展到大量受监视的文件描述符。
因此,似乎您正在处理的是文件描述符的阻塞,正在等待看是否对它们中的任何一个都可以进行I / O。
我会稍微改变一下策略,然后尝试利用lsof -p <pid>
一下是否可以缩小这些文件的实际范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句