您是否建议使用NSLog或Xcode提供的日志记录功能来进行调试?
使用NSLog有什么好处吗?
对于在客户设备上运行的应用:是否有一种简单的方法可以将NSLog或等效输出记录到文件或Web服务中?
答案 0 :(得分:4)
就个人而言,我建议同时使用日志记录(通过NSLog
)以及设置断点。也许你的问题是你何时应该使用其中一个。
当您想要进入代码并逐步观察发生的事情时,断点是很好的。单步执行代码的一些优点包括能够检查您喜欢的任何变量并能够通过gdb执行代码(有关gdb技巧的更多信息,请参阅Objective-C Debugging tips in Xcode4?)。断点也很方便,因为您不必重新编译和添加日志语句。
另见How to set a conditional breakpoint in Xcode based on an object string property?
日志非常适合您始终希望看到的信息。例如,下载资源的应用程序可能希望记录下载的每个资源(网址以及您可能希望的其他任何信息)。我喜欢使用名为DLOG
的宏创建条件日志,以便我可以看到更多详细的日志仅用于开发,但是将这些日志剥离出来用于发布版本。
#ifdef DEBUG
#define DLog(...) NSLog(__VA_ARGS__)
#else
#define DLog(...) /* */
#endif
这只会为DEBUG
版本发出NSLog消息。您可以添加类似的功能,以便为应用程序的复杂部分提供详细日志记录。当我调试拖动问题时,我发现让日志只是为了观察正在发生的事情(而不是逐步完成所有事情)通常很好。但是,当我完成功能的开发或修复问题时,我肯定不再对这些日志感兴趣,所以我通常会有条件地显示这些日志,这样如果我以后遇到问题,我可以再次查看日志