Mac OSX:使用 dtruss?

12 macos system.diagnostics dtrace

我正在尝试在 Mac OSX Catalina 中 dtruss 进程,但是 dtrace 报告错误。

$ sudo dtruss whoami                 
dtrace: system integrity protection is on, some features will not be available

dtrace: failed to execute whoami: (os/kern) failure
Run Code Online (Sandbox Code Playgroud)

我基本上是想获得堆栈跟踪。任何人都可以提供有关完成此操作的指导吗?

谢谢

小智 15

本文介绍了如何完成此操作: 使用 SIP 在系统上启用 D-Trace

您可以通过执行以下操作完全禁用 SIP:

  1. 重启你的 Mac
  2. 重启时按住 ?R
  3. 实用程序菜单中,运行终端
  4. 输入以下命令
csrutil disable
Run Code Online (Sandbox Code Playgroud)

或者,您可以dtrace通过运行以下命令重新启用 SIP,同时仍然允许工作:

csrutil enable --without dtrace
Run Code Online (Sandbox Code Playgroud)

  • 与全面禁用相比,更喜欢使用“csrutil enable --without dtrace”命令非常重要。这也能完成同样的工作,并且不会关闭所有可能使您的系统更容易受到攻击的安全功能。 (3认同)
  • **更新:** 我在这里为更新/改进的“dtruss”做了一个更永久的家:https://gitlab.com/pmdj/macos-dtrace-scripts - 我没有对原始版本的写访问权限不再是 repo 了,它只是一个不相关的项目中的一个小脚本。 (2认同)