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 );
我研究了最新的文档here或here,但到目前为止还没有帮助。值得注意的是,之前调试区域会在我运行项目时自动打开。自安装Xcode9
后,它就不再这样做了。
希望在下面的编辑中提供的额外信息会向我尚未查看的人建议。感谢。
编辑1
在控制台区域 - 即调试区域的右下角 - 我选择了所有输出。所以我尝试使用调试器输出和目标输出,但仍然没有日志。
我在Prefix.pch
文件
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode
#endif
当我运行代码时,问题导航器中出现以下内容。
Unused variable 'outputData'
编辑2
在Xcode9中设置 DEBUG = 1 似乎有不同的地方(参见以下)。
我使用几个SO帖子here,here,here(都很老)和even here中建议的示例将.DEBUG宏插入到.pch文件中确保将MyLog更改回NSLog )。在每种情况下,我都可以在问题导航器中报告相同的问题,但从不在调试控制台中报告。通过将文件复制到新项目中解决了类似问题(Xcode5
)here,但我想避免这种情况。
我的应用程序几乎已经完成,到目前为止还没有处理统一日志记录试图解决的任何复杂问题。但我在统一日志记录上观看2016 WWDC video并阅读其幻灯片放映文件,搜索如何使用适当的API执行基本操作的示例 - 将NSLog
实时打印到控制台区域 - 方式我在安装Xcode9.
之前做了这可能是错误的做法。但我想不出更好的办法。
编辑3
值得注意的是,当我使用Xcode9创建一个新的Objective C项目并运行上面的代码时,字符串消息出现在Console区域中。
换句话说,使用Xcode9时,新的日志记录API 与NSLog,
一起使用,但仅适用于新项目,而不适用于使用早期版本的Xcode创建的项目。
启用DEBUG预处理器宏
答案 0 :(得分:1)
不是将调试语句编写到代码中,而是可以尝试删除断点,右键单击它,然后选择"编辑断点"。你应该看到这个菜单:
从那里,您点击"编辑断点"并且你得到了这个:
从那里,您可以点击"行动"你会看到这个菜单:
您可以输入打印消息(例如:myMethodCalled
)或变量值(myIntValue = @myIntValue@
),或者您可以键入调试器命令以在代码中的该位置执行(例如:po dump(myArray)
)。
这种方法的缺点是断点并不总是"粘性"到您最初放入的代码行。
答案 1 :(得分:1)
试试这个。导航至:
产品 - >方案 - >编辑方案 - >运行 - >参数 - >环境变量
在Xcode中。
添加OS_ACTIVITY_MODE
并将值设置为disable
或leave 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">
。我很满意我有一个有效的解决方案。
<强>参数强>
选项强>