gpt4 book ai didi

macos - 为什么 iosnoop(磁盘上的 IO 监听文件)返回带有问号的路径?

转载 作者:行者123 更新时间:2023-12-04 01:54:33 34 4
gpt4 key购买 nike

如果我在运行

sudo iosnoop | grep "gem"

然后在另一个终端运行
gem env

在 iosnoop 终端中,我看到:
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
...
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
501 54406 R 21523616 512 bash ??/bin/gem
501 94092 R 141320288 4096 bash ??/bin/gem
501 94092 R 141320168 4096 ruby ??/1.8/rubygems.rb
501 94092 R 141320208 4096 ruby ??/1.8/rubygems.rb
501 94092 R 141319208 4096 ruby ??/rubygems/errors.rb
501 94092 R 141319856 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319864 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319872 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319888 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319896 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319904 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319928 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319936 4096 ruby ??/rubygems/specification.rb
501 94092 R 141319944 4096 ruby ??/rubygems/specification.rb
501 94092 R 141320176 4096 ruby ??/1.8/rubygems.rb
501 94092 R 141320184 4096 ruby ??/1.8/rubygems.rb
...

处理文件路径中 ruby​​ 附近的问号是什么:
ruby ??/1.8/rubygems.rb

?我怎样才能找到 绝对路径 所有这些文件?

附加问题 - 为什么这里出现错误:
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0

?

最佳答案

简短的回答是:

  • 这 ??表示剩余的路径名未知,
  • 你不能提取绝对路径和
  • 这是 OS X 上 DTrace 的一个特性,而不是一个错误。

  • 对这些要点的解释需要对 DTrace 有一定的了解;
    如果合适,然后从 introduction to the Solaris version 开始.
    iosnoop是一个利用 DTrace 可观察性的脚本
    框架。特别是,它使用 io供应商 startdone探针;开始探针公开请求的 bufinfo_t ,
    目标设备的 devinfo_t以及对应的文件
    fileinfo_t . fileinfo_t不是原生达尔文类型:
    它是 dtrace(1) 提供的结构,它提供了一个
    为了用户的利益,方便地抽象文件。
    例如,其成员中有 fi_pathname , 哪一个
    应该给出文件的完整路径名。

    抽象的描述可以保护用户,以及他们的
    脚本,从了解和更改底层
    操作系统的实现。理论上,它还允许
    在不同操作系统上运行的单个脚本
    共。

    fileinfo_t 是动态构造和填充的
    使用 DTrace translator/usr/lib/dtrace/io.d 中描述.
    这显示了从操作系统特定类型的转换
    到抽象。在雪豹的情况下,我看到 fi_pathname由字符串 "??/"后跟
    IO 缓冲区的一些衍生物。我不是达尔文专家,但
    我推断它根本不记录完整的路径名
    虚拟节点。因此,这就是“??”的由来。在输出中
    您的脚本以及我认为绝对的原因
    路径名不可用。

    最后,您的 DTrace 错误。无论出于何种原因,Apple 的
    DTrace的端口是巧妙的 crippled因为它排除了追踪
    各种进程,您看到的错误消息是
    一个特征性的症状。具体来说,投诉是关于
    线
    start_uid[this->dev, this->blk] = (int)uid;

    事实证明(再次,在雪豹上),试图评估 uid在任何 launchd , diskimages-helpkernel_task过程导致了这个错误。我认为这些
    进程“越界”,您看到的错误是
    苹果修改的后果。

    关于macos - 为什么 iosnoop(磁盘上的 IO 监听文件)返回带有问号的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191708/

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