NSObjCMessageLoggingEnabled与iPhone 3.0
-
06-07-2019 - |
题
我正在调试为iPhone OS 2.2.1编写的程序,并且必须稍微重写3.0。拥有正在进行的所有Objective-C消息调用的列表,包括“幕后”消息。电话,非常有用。
我在网站上发现了NSObjCMessageLoggingEnabled,但我不确定它是否适用于iPhone。有没有人知道这是否/如何运作,如果没有,如果有另一种方式我可以达到同样的目的?
谢谢!
解决方案
我终于想出了一个相对简单(虽然不是很优雅)的方法来做到这一点。
在iPhone上进行调试时,我为objc_msgSend设置了一个断点。然后我输入了这个简单的GDB脚本:
while 1
printf "[%s %s]", (char *)object_getClassName($r0), (char *) $r1
c
end
打印出每个方法调用。它并不完美,因为它打印出发送消息的对象的类名,而不是对象本身,但它适用于我需要的。
请注意,这只适用于iPhone本身。
其他提示
NSObjCMessageLoggingEnabled
(及其双 instrumentObjcMessageSends(BOOL)
)在模拟器中可用,但在设备上不可用。
不隶属于 StackOverflow