我需要捕获并记录Cocoa应用程序中对象发出的所有消息.而且我还需要运行时对象实例列表.它有可能吗?
使用dtrace,它已经内置到系统中.请参阅MacTech上的这篇精彩的介绍性文章.
Dtrace是一个系统范围的标准机制,以便您可以记录活动.各种系统API通知内核,即每个系统调用,每个objc_msgSend等都生成一个可跟踪点,您可以将dtrace脚本传递给内核来记录这些活动.它非常强大.
作为练习,请将以下内容放入一个名为objc.d:
objc$target:::entry
{
printf("[%s %s]\n", probemod,probefunc);
}
Run Code Online (Sandbox Code Playgroud)
然后从命令行运行
$ sudo dtrace -q -s objc.d -p 3333
Run Code Online (Sandbox Code Playgroud)
其中3333应该是一些Cocoa app的pid.您将获得发送到任何对象的每条消息的日志!真厉害!
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |