Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
macOS上Rust程序的类DTrace函数跟踪_Macos_Rust_Dtrace_Ebpf_Smartos - Fatal编程技术网

macOS上Rust程序的类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?它仅在常见的“受保护”目录上启用(应用程序、专用、系统等)

我有一个使用C FFI的Rust程序,我想在调用该C FFI中的函数以及传递给它的参数时插入指令

我在macOS上开发,看起来DTrace很适合,但是。我不想禁用SIP

我正在考虑使用此DTrace提供程序:
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