macOS上Rust程序的类DTrace函数跟踪
我有一个使用C FFI的Rust程序,我想在调用该C FFI中的函数以及传递给它的参数时插入指令 我在macOS上开发,看起来DTrace很适合,但是。我不想禁用SIP 我正在考虑使用此DTrace提供程序:macOS上Rust程序的类DTrace函数跟踪,macos,rust,dtrace,ebpf,smartos,Macos,Rust,Dtrace,Ebpf,Smartos,我有一个使用C FFI的Rust程序,我想在调用该C FFI中的函数以及传递给它的参数时插入指令 我在macOS上开发,看起来DTrace很适合,但是。我不想禁用SIP 我正在考虑使用此DTrace提供程序: pid$target:::条目 问题: 有没有更好的方法在macOS/Rust上实现这一点 为了在我的Rust程序上使用DTrace/eBPF,作为VM运行的最佳操作系统是什么 我在记下答案,但我会在这里问你-你是如何遇到SIP?它仅在常见的“受保护”目录上启用(应用程序、专用、系统等)
pid$target:::条目
问题:
- 有没有更好的方法在macOS/Rust上实现这一点
- 为了在我的Rust程序上使用DTrace/eBPF,作为VM运行的最佳操作系统是什么
SIP
?它仅在常见的“受保护”目录上启用(应用程序
、专用
、系统
等)。您正在尝试分析您移动到那里的内容吗?sudo dtrace-s script.d-c“/t.sh”
导致dtrace:无法执行。/t.sh:dtrace无法控制使用受限权限签名的可执行文件
sudo dtrace-s script.d-c“货物测试测试名称--包运行时--nocapture--测试线程=1”
导致dtrace:script'b.d'匹配258个探测
,但不打印输出。测试启动OS线程,我也想跟踪这些线程。我认为dtrace的-c
可能以root运行cargo,因此它不读取工作区,但我看不到-c
的输出。让我猜猜。t.sh
是否调用任何受保护文件夹中的任何内容?(我在我的小列表中忘记了/usr
)t.sh
不起作用,因为它是通过/bin/bash
调用的,我认为它是受保护的。我确实使用了sudodtrace-sb.d-c./target/debug/deps/runtime-069474f52c940449 test\u name--nocapture--test threads=1“-o out.txt
,但到目前为止,我只测试了pid$target::entry
探测。只是为了确保您知道:您可以重新启用dtrace,并让其余的SIP保持启用状态csrutil enable——如果没有dtrace
,我会记下答案,但我会在这里问你-你是如何遇到SIP
?它仅在常见的“受保护”目录上启用(应用程序
、专用
、系统
等)。您正在尝试分析您移动到那里的内容吗?sudo dtrace-s script.d-c“/t.sh”
导致dtrace:无法执行。/t.sh:dtrace无法控制使用受限权限签名的可执行文件
sudo dtrace-s script.d-c“货物测试测试名称--包运行时--nocapture--测试线程=1”
导致dtrace:script'b.d'匹配258个探测
,但不打印输出。测试启动OS线程,我也想跟踪这些线程。我认为dtrace的-c
可能以root运行cargo,因此它不读取工作区,但我看不到-c
的输出。让我猜猜。t.sh
是否调用任何受保护文件夹中的任何内容?(我在我的小列表中忘记了/usr
)t.sh
不起作用,因为它是通过/bin/bash
调用的,我认为它是受保护的。我确实使用了sudodtrace-sb.d-c./target/debug/deps/runtime-069474f52c940449 test\u name--nocapture--test threads=1“-o out.txt
,但到目前为止,我只测试了pid$target::entry
探测。只是为了确保您知道:您可以重新启用dtrace,并让其余的SIP保持启用状态<代码>csrutil启用--不带dtrace