我正在调试为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))在模拟器中可用,但在设备上不可用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top