You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS 12+ ktrace是否支持-t c参数实现系统调用追踪?

macOS 12及更高版本ktrace追踪系统调用方案

在已关闭SIP系统完整性保护的前提下,macOS 12及后续版本依然支持仅通过ktrace工具完成系统调用追踪。旧版本命令失效的核心原因是苹果重构了ktrace的参数逻辑,原用于指定追踪系统调用的-t c参数语义已发生变更。

可用命令

旧版命令中-t c的事件过滤功能,在新版ktrace中需要通过-f/--filter参数指定事件类实现,追踪新启动二进制的系统调用可使用如下命令:

sudo ktrace trace -s -S -f syscall -c ./some_binary

如果需要追踪已经在运行的进程,将-c ./some_binary替换为-p <目标进程PID>即可。
如果需要使用Mach绝对时间戳替代默认本地墙上时钟时间,可追加新版语义下的-t参数,不影响系统调用的过滤逻辑:

sudo ktrace trace -s -S -t -f syscall -c ./some_binary

参数说明

  • -s:打印系统调用的传入参数详情
  • -S:打印系统调用的返回值结果
  • -f syscall:核心过滤参数,指定仅采集syscall类事件,即所有系统调用,完全替代旧版-t c的作用
  • -c:后接需要启动并追踪的目标二进制文件路径
  • -p:后接需要附加追踪的已运行进程PID
  • -t:新版语义下仅用于切换时间戳为Mach绝对时间格式,不再承担事件过滤功能

验证方式

可通过追踪系统自带的ls命令快速验证效果:

sudo ktrace trace -s -S -f syscall -c /bin/ls

执行后会输出ls运行全流程触发的open、read、write、close、mmap等所有系统调用的参数、返回值明细,与旧版macOS下-t c参数的输出效果一致。

内容的提问来源于stack exchange,提问作者ylluminate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 05:09:25