NSOBJCMessageLogging已在iPhone 3.0中启用

NSOBJCMessageLogging已在iPhone 3.0中启用,iphone,objective-c,objective-c-runtime,Iphone,Objective C,Objective C Runtime,我正在调试一个为iPhoneOS2.2.1编写的程序,该程序在3.0版中需要稍微重写。列出所有正在进行的Objective-C消息调用,包括“幕后”调用,将非常有用 我在一个网站上发现NSOBJCMessageLogging已启用,但不确定它是否适用于iPhone。是否有人知道这是否/如何运作,如果没有,是否有其他方法可以实现同样的目标 谢谢 nsobjcmessagelogginenabled(以及它的两个instrumentObjcMessageSends(BOOL))可以在模拟器中使用,但

我正在调试一个为iPhoneOS2.2.1编写的程序,该程序在3.0版中需要稍微重写。列出所有正在进行的Objective-C消息调用,包括“幕后”调用,将非常有用

我在一个网站上发现NSOBJCMessageLogging已启用,但不确定它是否适用于iPhone。是否有人知道这是否/如何运作,如果没有,是否有其他方法可以实现同样的目标


谢谢

nsobjcmessagelogginenabled
(以及它的两个
instrumentObjcMessageSends(BOOL)
)可以在模拟器中使用,但不能在设备上使用。

我终于想出了一个相对简单(尽管一点也不优雅)的方法来实现这一点

在iPhone上调试时,我为objc_msgSend设置了一个断点。然后我输入了这个简单的GDB脚本:

while 1
printf "[%s %s]", (char *)object_getClassName($r0), (char *) $r1 
c
end
这将打印出每个方法调用。它并不完美,因为它打印出消息发送到的对象的类名,而不是对象本身,但它可以满足我的需要


请注意,这只适用于iPhone本身。

谢谢。我发现了使用GDB的另一种(不那么优雅的)方法。您可以将其作为xcode中断点的操作