如何使用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
您可以尝试在断点处点击鼠标右键,然后select“编辑断点”,而不是将debugging语句写入代码。 你应该看到这个菜单:
从那里,你会点击“编辑断点”,你会看到:
从那里,你可以点击“行动”,你会看到这个菜单:
您可以input打印消息(例如: myMethodCalled
)或variables值( myIntValue = @myIntValue@
),也可以inputdebugging器命令在代码中执行该位置(例如: po dump(myArray)
)。
这种方法的缺点是,断点并不总是“粘”到你最初放置的代码行上。
尝试这个。 导航:
产品 – >scheme – >编辑scheme – >运行 – >参数 – >环境variables
在Xcode。
添加OS_ACTIVITY_MODE
并将该值设置为disable
或leave 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。
参数
选项