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

时间:2017-09-25 04:04:24

标签: ios objective-c xcode xcode9

This看起来很有前途,但似乎不是一个重复的问题,因为它解决了Swift中的问题。

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

使用Swift和Objective-C应用程序的日志记录的基本调试似乎在Xcode 9中已更改,因为NSLog消息不再出现在调试区域中。设置 DEBUG = 1 的窗口不再显示为Figure 2 The DEBUG preprocessor macro setting in an Xcode project.

作为示例,我想使用Xcode9在Debug区域中显示此字符串消息。

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

我研究了最新的文档herehere,但到目前为止还没有帮助。值得注意的是,之前调试区域会在我运行项目时自动打开。自安装Xcode9后,它就不再这样做了。

希望在下面的编辑中提供的额外信息会向我尚未查看的人建议。感谢。

编辑1

在控制台区域 - 即调试区域的右下角 - 我选择了所有输出。所以我尝试使用调试器输出目标输出,但仍然没有日志。

我在Prefix.pch文件

中添加了这些语句
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode 
#endif

当我运行代码时,问题导航器中出现以下内容。

    Unused variable 'outputData'

编辑2

在Xcode9中设置 DEBUG = 1 似乎有不同的地方(参见以下)。

我使用几个SO帖子hereherehere(都很老)和even here中建议的示例将.DEBUG宏插入到.pch文件中确保将MyLog更改回NSLog )。在每种情况下,我都可以在问题导航器中报告相同的问题,但从不在调试控制台中报告。通过将文件复制到新项目中解决了类似问题(Xcode5here,但我想避免这种情况。

我的应用程序几乎已经完成,到目前为止还没有处理统一日志记录试图解决的任何复杂问题。但我在统一日志记录上观看2016 WWDC video并阅读其幻灯片放映文件,搜索如何使用适当的API执行基本操作的示例 - 将NSLog实时打印到控制台区域 - 方式我在安装Xcode9.之前做了这可能是错误的做法。但我想不出更好的办法。

编辑3

值得注意的是,当我使用Xcode9创建一个新的Objective C项目并运行上面的代码时,字符串消息出现在Console区域中。

换句话说,使用Xcode9时,新的日志记录API NSLog,一起使用,但仅适用于新项目,而不适用于使用早期版本的Xcode创建的项目。

启用DEBUG预处理器宏

The DEBUG preprocessor macro setting in an Xcode project.

3 个答案:

答案 0 :(得分:1)

不是将调试语句编写到代码中,而是可以尝试删除断点,右键单击它,然后选择"编辑断点"。你应该看到这个菜单:

enter image description here

从那里,您点击"编辑断点"并且你得到了这个:

enter image description here

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

enter image description here

您可以输入打印消息(例如:myMethodCalled)或变量值(myIntValue = @myIntValue@),或者您可以键入调试器命令以在代码中的该位置执行(例如:po dump(myArray) )。

这种方法的缺点是断点并不总是"粘性"到您最初放入的代码行。

答案 1 :(得分:1)

试试这个。导航至:

产品 - >方案 - >编辑方案 - >运行 - >参数 - >环境变量

在Xcode中。

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

确保已选中!

希望这有帮助

答案 2 :(得分:0)

在preCompile标头中替换这些定义后,在Xcode9的控制台区域中启用了调试日志

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

以下

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

Arguments的环境变量是根据答案above设置的Options.的附加设置。更熟悉统一日志记录API的人可能会解释特定的选项,但我可以使用<!-- Button trigger modal --> <button type="button" id="mymodal" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"> 。我很满意我有一个有效的解决方案。

<强>参数

enter image description here

选项

enter image description here