-2

我有一个大项目,有很多NSLog()电话。当某些事情发生时,有些NSLog()工作,我不知道哪个NSLog会被调用。如何找到NSLog()在类文件中调用的地方?

NSLog的是这样的:NSLog(@"%@", someArray);

这是日志:

2013-04-23 20:43:38.257 myProj[2101:707] {
    id = 1;
    version = 1;
}

这里是什么myProj[2101:707]意思?它是否给了我关于NSLog函数在课堂上的位置的任何信息?

4

3 回答 3

6

您可以尝试在项目中搜索输出。

例如,如果输出是

This is my output with values 3.1415 and 1.2345.

cmdshiftF并搜索“这是我的输出值”

您还可以在搜索词中插入占位符:

在此处输入图像描述

于 2013-04-23T16:04:36.367 回答
1

将所有 NSLog 使用转换为 DLog,然后将打印日志语句:

  1. 文件名
  2. 方法名称
  3. 行号

输出到日志的每一行。通过这种方式,您可以立即看到所有日志记录在哪里完成。DLog 是一种比 NSLog 更好的日志记录机制,您应该开始在所有项目中使用它。

在您的 pch 文件中将 DLog 定义为:

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__,  ##__VA_ARGS__);
#else
#   define DLog(...)
#endif
于 2013-04-23T16:08:31.853 回答
0

您可以使用该函数class_getName获取放置日志语句的对象的类名,并将类名包含在NSLog().

像这样:

#import <objc/runtime.h>
…
NSLog("%@ Some Log Statement", class_getName([self class]));
于 2013-04-23T16:06:20.547 回答