我正在尝试在 OS X 上的一些 C 代码中找到 CoW 页面错误的根源。我想使用vminfo DTrace 提供程序,但vminfo
在 OS X 上不可用。在 Linux 上,我可以使用 SystemTap 打印 CoW 故障的堆栈跟踪。有没有办法在 OS X 上做到这一点?
答案1
看起来您想要禁用 dtrace SIP 保护。
查看我的类似在 apple.stackexchange 中回答用于禁用 SIP 中的 dtrace 保护。
我已启用 SIP,无需 dtrace,并且可以访问 vminfo。
# uname -a
Darwin Phoenix.local 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
# dtrace -n 'vminfo:::cow_fault {trace(probefunc)}'
dtrace: description 'vminfo:::cow_fault ' matched 2 probes
CPU ID FUNCTION:NAME
0 1182 vm_page_validate_cs_mapped_chunk:cow_fault vm_page_validate_cs_mapped_chunk
0 1182 vm_page_validate_cs_mapped_chunk:cow_fault vm_page_validate_cs_mapped_chunk
0 1182 vm_page_validate_cs_mapped_chunk:cow_fault vm_page_validate_cs_mapped_chunk