【发布时间】:2016-08-05 01:42:37
【问题描述】:
我在 Linux 上使用 strace 来捕获对 open()、close() 和 read() 的调用。目标进程是码头网络服务器。据我所知,strace 没有记录所有对 open() 的调用。也许其他人也是,我没有尝试将文件描述符与 open() 调用相关联。
比如开始strace:
strace -f -e trace=open,close,read -o/tmp/strace.out -p62881
然后我使用 wget 获取 100 个静态文件;都已成功检索。在一次运行中,只记录了 56 个打开的事件;在另一次运行 100 个不同的文件时,我得到了 66 个打开的事件。
我相信使用“-f”会导致 strace 附加到线程的所有 LWPID(“进程 62881 附加了 25 个线程 - 中断退出 "); 当我尝试使用多个“-p”选项显式附加到所有人时,我得到一个“附加”成功消息,但有多个“操作不允许消息”,每个子 PID 一个。
我在测试前重新启动了 Jetty 以清除其缓存。
内核版本为 2.6.32-504.3.3.el6.x86_64 (Red Hat)。 strace 包版本为 strace-4.5.19-1.19.el6.x86_64。
我错过了什么?
谢谢
【问题讨论】:
标签: linux multithreading strace