gpt4 book ai didi

linux - Linux 上的 strace 不记录对 open() 的所有调用

转载 作者:IT王子 更新时间:2023-10-29 01:26:00 24 4
gpt4 key购买 nike

我在 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。

我错过了什么?

谢谢

最佳答案

在某些系统上,您必须使用 openat() 而不是 open()。

尝试:
strace -f -e trace=openat,close,read -o/tmp/strace.out -p62881

关于linux - Linux 上的 strace 不记录对 open() 的所有调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com