如何使用Xcode9在debugging区域中显示此日志消息?

这看起来很有希望,但似乎不像一个重复的问题,因为它解决了Swift中的问题。


我正在敲定现有的Objective C项目,但NSLog在更新到Xcode 9时消失了。所以我正在寻找Xcode中的一些设置,让我继续使用NSLog来微调项目。

使用Swift和Objective-C应用程序日志的基本debugging在Xcode 9中看起来已经改变,因为NSLog消息不再出现在debugging区域中。 DEBUG = 1的窗口设置不再像图2 Xcode项目中的DEBUG预处理器macros设置。

作为一个例子,我想使用Xcode9在debugging区域显示这个string消息。

  NSString *outputData = @"This should show in Debug area"; NSLog( @"text: %@", outputData ); 

我在这里或这里研究了最新的文档,但迄今为止没有帮助。 也许值得注意的是,之前的Debug区域在我运行该项目时会自动打开。 由于安装Xcode9它不再那样做。

希望在下面的编辑提供的额外信息将build议我还没有看的人。 谢谢。


编辑1

在控制台区域 – 即debugging区域的右下部分 – 我select了所有输出 。 所以我尝试使用debugging器输出目标输出,但仍然没有日志。

我在Prefix.pch文件中添加了这些语句

 #ifndef DEBUG #define NSLog(...) /* suppress NSLog when in release mode #endif 

当我运行代码时,Issue Navigator中出现以下代码。

  Unused variable 'outputData' 

编辑2

在Xcode9中似乎有一个不同的地方来设置DEBUG = 1 (见下文 )。

我使用在这里 , 在 这里 (所有相当陈旧), 甚至在这里 ( 确保将MyLog更改回NSLog ) 这里几个SOpost中build议的示例插入一个DEBUGmacros到.pch文件。 在每种情况下,我都能够在“问题”导航器中报告相同的问题,但从未在“debugging”控制台中报告。 类似的问题(使用Xcode5 )通过将文件复制到一个新的项目中解决了,但是我想避免这个问题。

我的应用程序几乎已经完成,迄今为止不必处理统一日志寻求解决的任何复杂问题。 但是我观看了2016年的WWDC上的统一日志loggingvideo ,并通过幻灯片演示文件阅读了一个如何使用合适的API来做一些基本的事情的例子 – 在安装Xcode9.之前,将NSLog直接打印到控制台区域Xcode9. 这可能是错误的方法。 但我想不出一个更好的方法来进行。


编辑3

值得注意的是,当我使用Xcode9创build一个新的Objective C项目并运行上面的代码时,string消息出现在控制台区域。

换句话说,使用Xcode9,新的日志API可以和NSLog,工作NSLog,但是只能用于新的项目,而不能用于使用早期版本的Xcode创build的日志。


启用DEBUG预处理器macros

Xcode项目中的DEBUG预处理器宏设置。

您可以尝试在断点处点击鼠标右键,然后select“编辑断点”,而不是将debugging语句写入代码。 你应该看到这个菜单:

在这里输入图像说明

从那里,你会点击“编辑断点”,你会看到:

在这里输入图像说明

从那里,你可以点击“行动”,你会看到这个菜单:

在这里输入图像说明

您可以input打印消息(例如: myMethodCalled )或variables值( myIntValue = @myIntValue@ ),也可以inputdebugging器命令在代码中执行该位置(例如: po dump(myArray) )。

这种方法的缺点是,断点并不总是“粘”到你最初放置的代码行上。

尝试这个。 导航:

产品 – >scheme – >编辑scheme – >运行 – >参数 – >环境variables

在Xcode。

添加OS_ACTIVITY_MODE并将该值设置为disableleave it empty

确保它被检查!

希望这可以帮助

在预编译头文件中replace这些定义之后,在Xcode9的控制台区域中启用了debugging日志

  #ifndef DEBUG #define NSLog(...) /* suppress NSLog when in release mode */ #endif 

与以下

  #ifdef __DEBUG__ #define NSLog(...) /* suppress NSLog when in release mode */ #endif 

Arguments环境variables是根据上面的答案设置的,另外还有Options.设置Options. 有人更熟悉统一日志API可能会解释特定的选项,但我很满意我有一个工作的解决scheme。

参数

在这里输入图像说明

选项

在这里输入图像说明