我正在OS X El Capitan(10.11.4)上运行以下命令:
sudo dtruss /usr/local/bin/mix phoenix.server
它失败,说:
dtrace:无法执行/ usr / local / bin / mix:dtrace无法控制以受限权利签名的可执行文件
mix
是我随Homebrew安装的可执行文件。/usr/local/bin/mix
实际上是一个符号链接,但它指向嵌套在下的文件/usr/local/Cellar
。
关于SIP的官方声明说,/usr/local
它对于安装人员是可写的(与/usr/
一般情况不同)。它没有说SIP是否允许在此跟踪程序,但是鉴于我自己安装了该程序,因此能够跟踪它似乎是合理的。
我可以做些什么来允许跟踪此程序吗?我的想法:
- 完全禁用SIP(似乎很用力)
- 更新:我读到可以选择性地禁用SIP的一部分,但是作为第一步,我完全禁用了它。
csrutil status
现在报告System Integrity Protection status: disabled.
。但是我的原始命令仍然失败,并显示相同的错误。:(
- 更新:我读到可以选择性地禁用SIP的一部分,但是作为第一步,我完全禁用了它。
- 使Homebrew将所有内容安装到下面的文件夹中
~
(似乎很杂乱)- 更新:肯定这将是一个坏主意
- 忽略Homebrew并
mix
从源代码编译为~
,然后将新的可执行文件压缩- 更新:同样的失败。这对我来说真的没有任何意义。SIP已关闭,因为我自己编译了该可执行文件,所以未对其进行“签名”,并且该文件不在受限制的位置。:P
- 在VM中安装Linux。(严重吗?我必须这样做吗?)
@patrix我将其复制到
—
内森·朗
~
,虽然mix
可以从那里运行,但是尝试dtruss
给出相同的错误。
注意-我的特殊用例是观察流程访问了哪些文件。
—
内森·朗
sudo fs_usage > some_file
后来为感兴趣的过程做准备就可以了。但是我仍然不明白为什么我的原始命令不起作用。我是root,我明确要求使用锋利的剪刀。
~
或创建硬链接会怎样?