iphone - watch步数 - 健康apple




如何记录iOS应用程序中使用的所有方法 (6)

一位开发人员教我向每个方法添加相同的两个日志语句。 一个作为第一行,另一个作为最后一行。 我认为他有一个脚本可以自动为他的项目执行此操作,但结果是:

NSLog(@"<<< Entering %s >>>", __PRETTY_FUNCTION__);
NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__);

在控制台,这将吐出类似于:

 <<< Entering -[MainListTableViewController viewDidLoad] >>>

非常有助于跟踪正在发生的事情。

我正在为客户开发一款iPad应用程序。 已经有大量的工作已经完成,我正在努力拼凑整个设计的运行方式。

我想做的一件事是记录应用运行时调用哪些方法。 我见过一个自定义DTrace脚本,它意味着记录启动时的所有方法,但是当我在Instruments中运行它时,我得不到任何结果。

记录方法的最佳方法是什么?


以后需要像这样调用的xcode版本

expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) )

可以使用调试器命令调整Brad Larson的方法以在设备上运行:

printf "[%s %s]\n", (char *)object_getClassName($r0),$r1

更多信息可以在技术说明中找到: technotes


如果使用LLDB,则需要使用以下调试器命令。 这些在Xcode 4.6中进行了测试。

设备:

expr -- (void) printf("[%s %s]\n", (char *)object_getClassName($r0),$r1)

模拟器:

expr -- (void) printf("[%s %s]\n", (char *)object_getClassName(*(long*)($esp+4)), *(long *)($esp+8))

如果要将输出限制为仅发送到一个类的消息,可以添加这样的条件

(int)strcmp((char *)object_getClassName($ r0),“NSString”)== 0


要在设备上跟踪Xcode 6下的应用程序代码,我必须使用以下调试器表达式。

expr -- (void) printf("[%s %s]\n", (char *)object_getClassName($arg1),$arg2)




instruments