%EF%BC%9ADIF%20%E7%9A%84%E6%93%8D%E4%BD%9C%20%232%20%E4%B8%AD%E7%9A%84%E7%94%A8%E6%88%B7%E8%AE%BF%E9%97%AE%E6%97%A0%E6%95%88.png)
我有以下一行来显示进程打开的文件:
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
但是我有很多重复的错误,例如:
dtrace: error on enabled probe ID 4 (ID 946: syscall::open_nocancel:entry): invalid user access in action #2 at DIF offset 24
dtrace: error on enabled probe ID 7 (ID 160: syscall::open:entry): invalid user access in action #2 at DIF offset 24
我知道我可以通过重定向到 来抑制它们2> /dev/null
。
这些错误意味着什么以及为什么会发生?
是dtrace
故障还是某些特定过程导致的?以及如何解决这个问题?
我使用的是 OS X 10.11.2
答案1
这可能与 El Capitan 及其系统完整性保护 ( ) 有关,csrutil status
可能会影响dtrace
行为。
潜在的修复包括将 Mac 重新启动到恢复模式(⌘-R在启动时),然后在终端中运行:
csrutil enable --without dtrace
保持 SIP 启用,但禁用 DTrace 限制(注意:这是未记录的参数)。
或者通过以下方式完全禁用 SIP:
csrutil disable # Not recommended.
看: