当我在 2010 年末的 Macbook Pro(10.6.7)上运行时,iotop -C 5 12
我反复出现此错误:
dtrace: error on enabled probe ID 5 (ID 19507: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
这是什么原因造成的?如何解决?
答案1
答案2
错误输出到 stderr,可以通过运行以下命令将其过滤掉:
sudo iotop -C 5 12 2>/dev/null
这确实有过滤掉可能出现的其他错误的副作用。我发现这是一个不错的权衡,因为它使我的 iotop 输出更易读。
不幸的是,我不确定错误的原因是什么。我已经搜索过了,但还没有找到任何东西。
答案3
简而言之,当尝试跟踪已请求不被跟踪的进程时会显示错误。
从技术上讲,该错误不是由 iTunes 引起的,而是由禁用跟踪的进程引起的,使用如下代码。
ptrace(PT_DENY_ATTACH, 0, 0, 0);
该代码在内核级别上对进程设置了一个标志,从而阻止对该进程进行调试和跟踪。
最知名的实现此功能的应用程序恰好是 iTunes,该 API 可能就是为该应用程序的 DRM 而发明的,但该 API 也可供其他进程使用。我见过许多第三方应用程序使用该 API。
当然,像所有 DRM 一样,它也可以被破解。绕过此反跟踪和反调试功能的选项包括使用调试器跳过 API 调用,以及在内核空间中修补该功能的内核扩展。
答案4
取自https://unix.stackexchange.com/a/276219
这可能与 El Capitan 及其系统完整性保护 () 有关,
csrutil status
可能会影响dtrace
行为。潜在的修复方法包括将 Mac 重新启动到恢复模式(在启动时⌘- R),然后在终端运行:
csrutil enable --without dtrace
保持 SIP 启用,但禁用 DTrace 限制(注意:这是未记录的参数)。
或者通过以下方式完全禁用 SIP:
csrutil disable # Not recommended.
看: