【发布时间】:2020-01-04 21:01:56
【问题描述】:
MacOS 是否有用于跟踪 I/O 活动(例如通过 IOKit)的实用程序/命令,以用于调试目的?
存在用于网络、系统调用等活动的工具,但我找不到任何有关如何查找特定进程当前正在使用哪些设备的信息。达尔文甚至可以做到这一点吗?
【问题讨论】:
标签: macos io trace iokit darwin
MacOS 是否有用于跟踪 I/O 活动(例如通过 IOKit)的实用程序/命令,以用于调试目的?
存在用于网络、系统调用等活动的工具,但我找不到任何有关如何查找特定进程当前正在使用哪些设备的信息。达尔文甚至可以做到这一点吗?
【问题讨论】:
标签: macos io trace iokit darwin
这并不完全是 跟踪,但您可以使用 ioreg (CLI) 或 IORegistryExplorer.app(GUI,来自 Xcode Additional工具包)或 IOJones.app(开源 GUI)。这将告诉您在给定时间哪些进程连接到 IOService,尽管可能很难看到短暂的连接。
我不知道有一个预制的跟踪工具,但应该可以编写您自己的 dtrace 脚本来执行此操作。请注意,IOKit 调用不是系统调用,而是使用 Mach 消息传递,因此您最好的选择可能是跟踪各种IOConnectCall*() 系列函数和类似函数的内核等效项。我一直想自己写这样的东西,但到目前为止还没有机会这样做。 (I did updatedtruss 在 macOS 上比不久前随操作系统附带的版本更有用,但不幸的是,dtruss 对 IOKit 没有帮助。)
【讨论】: