您可以在 MacOS 上跟踪 I/O activity 进程吗?

Can you trace I/O activity for a process on MacOS?

MacOS 是否有 utility/command 用于跟踪 I/O activity(例如通过 IOKit)用于调试目的的进程?

存在用于网络、系统调用等的工具。activity但是我找不到任何有关如何查找特定进程当前正在使用哪些设备的信息。这对达尔文来说甚至可能吗?

它不完全是 tracing,但您可以使用 ioreg (CLI) 或IORegistryExplorer.app(GUI,来自 Xcode 附加工具包)或 IOJones.app(开源 GUI)。这将告诉您哪些进程在给定时间连接到 IOService,尽管可能很难看到短暂的连接。

我不知道有预制的跟踪工具,但应该可以编写您自己的 dtrace 脚本来执行此操作。请注意,IOKit 调用不是系统调用,而是使用 Mach 消息传递,因此最好的办法可能是跟踪各种 IOConnectCall*() 函数族和类似函数的内核等价物。我一直想自己写这样的东西,但到目前为止还没有机会这样做。 (I did update dtruss 在 macOS 上比 OS 一段时间前附带的版本更有用,但不幸的是 dtruss 对 IOKit 没有帮助。)