Linux上的strace未记录对open()的所有调用
我正在使用strace捕获Linux上对open()、close()和read()的调用。目标进程是jetty web服务器。据我所知,strace没有记录对open()的所有调用。也许其他人也是,我没有尝试将文件描述符与open()调用关联起来 例如,启动策略: 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(红帽)。Strace软件包版本为Strace-4.5.19-1.19.el6.x86_64 我错过了什么 谢谢尝试Linux上的strace未记录对open()的所有调用,linux,multithreading,strace,Linux,Multithreading,Strace,我正在使用strace捕获Linux上对open()、close()和read()的调用。目标进程是jetty web服务器。据我所知,strace没有记录对open()的所有调用。也许其他人也是,我没有尝试将文件描述符与open()调用关联起来 例如,启动策略: strace-f-e trace=open、close、read-o/tmp/strace.out-p62881 然后我使用wget获取100个静态文件;所有已成功检索。在一次运行中,仅记录了56个打开事件;在另一次运行100个不同的
-ff
(除了-f
):
在某些系统上,必须使用openat()而不是open() 尝试:
strace-f-e trace=openat、close、read-o/tmp/strace.out-p62881
一个好建议。不幸的是,它并没有捕获所有的open()事件。
-ff: If the -o filename option is in effect, each processes trace is written to filename.pid where pid is
the numeric process id of each process. This is incompatible with -c, since no per-process counts are
kept.