iOS 10没有';不打印NSlog
在Xcode 8.0 beta版(8S128d)上,没有从NSLog打印任何内容<代码>打印F未更改 这是我的密码:iOS 10没有';不打印NSlog,ios,xcode,nslog,xcode8,ios10,Ios,Xcode,Nslog,Xcode8,Ios10,在Xcode 8.0 beta版(8S128d)上,没有从NSLog打印任何内容打印F未更改 这是我的密码: NSLog(@"hello from NSLog"); printf("hello from printf"); 以下是iOS 9模拟器上的输出: 2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog hello from printf hello from printf 以下是iOS 10模拟器上的输
NSLog(@"hello from NSLog");
printf("hello from printf");
以下是iOS 9模拟器上的输出:
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
hello from printf
以下是iOS 10模拟器上的输出:
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
hello from printf
如果你检查一下,你会发现上面写着:
调试在模拟器上运行的应用程序时,控制台中可能看不到日志。
解决方法:在Simulator.app中使用command+/打开Console应用程序中的系统日志以查看NSLogs。(26457535)
在真正的iOS 10设备中,我也看不到NSLog输出。如果您使用的是真正的设备,您可以从Xcode(Shift+Command+2)打开“设备”窗口并在那里查看设备日志,但很难查看应用程序的日志,因为控制台会显示来自系统和所有应用程序的日志
(我使用的是Xcode 7,所以这可能不是Xcode的问题,而是iOS 10的问题)可能是您在Scheme环境变量中添加了属性“OS_ACTIVITY_MODE”:“disable”(用于从模拟器中隐藏OS输出)而忘记了它,现在正在实际设备上运行 在Xcode 8中:
Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
仅添加操作系统活动模式并检查(不添加值)
总结:
这是Xcode 8+iOS10的一个bug,我们可以这样解决:
- 使用模拟器时,添加名称“操作系统活动模式”和值“禁用”,并进行检查
- 在实际设备上,只添加“操作系统活动模式”并选中它(不添加值)。 您将在Xcode8控制台中看到NSLog
Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
添加“操作系统活动模式”,并将该值设置为“禁用”,然后进行检查
单击“关闭”
xcode9
添加“操作系统活动模式”,并将该值设置为“默认”,然后进行检查
我使用的是Xcode 8,所以我也遇到了同样的问题。我通过在模拟器上添加
value=disable
解决了这个问题,但在真正的机器上我不添加值。另外,确保控制台在Xcode中实际可见(即,确保右侧图标以蓝色突出显示,如下图所示)。升级Xcode后,它隐藏了控制台,只显示了变量视图。这使它看起来好像NSLog()
工作不正常,但它确实工作正常,我就是看不到输出
嗯。。。属性“OS_ACTIVITY_MODE”:“disable”防止NSlog显示在Xcode 9日志中
在我的方案中取消选中此值将恢复我的日志
NSLog
当我升级到Xcode 9.1+iOS 11.1时,不再显示消息。最初,通过使用控制台应用程序并启用模拟器(),我找到了解决这个问题的方法
在控制台应用程序中的Action
下,我尝试选择Include Debug Messages
并取消选择Include Info Messages
(这样控制台就不会被系统消息淹没)NSLog
消息出现在Xcode的控制台窗口中,但不出现在控制台应用程序中
我意识到必须有一种更直接的方法来禁用或启用(即默认)
NSLogs
,这要感谢Coeur的评论,我认为这是最好的答案,因为将OS_ACTIVITY_模式
设置为禁用
或默认
,对初学者来说更有意义 对于将来遇到这种情况的人。在iOS 10和iOS 11中,NSLog没有打印到syslog的原因是由于Apple更改为统一日志
您可以在此处看到WWDC对此的讨论:
此处的文档:
从10开始,您应该使用os_log而不是NSLog
如何在磁盘上查找日志:
总之,日志位于/var/db/diagnostics
中,可以在/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/
中找到虚拟机的日志
将diagnostics
和uuidtext
中的所有项目复制到一个文件夹中(不要仅包括文件夹中的diagnostics或uuidtext)
重命名该文件夹foldername.xarchive
在Console.app中打开它或使用OSX util
log
:log show--info--predicate
在真正的iOS 10设备中我也看不到NSLog输出。如果您使用的是真实设备,您可以打开设备窗口(Shift+Command+2)并在那里查看设备日志,但很难查看调试应用程序日志,因为控制台会显示来自系统和应用程序的所有日志。我没有在iOS 10 GM下的设备窗口中看到我的应用程序的NSLogs。你有相同的问题吗?我可以在iOS 10 GM的Xcode 7中看到日志,无需再打开设备窗口。不过,我不是说从Xcode运行,我说的是从部署的应用程序打印的日志。这方面有什么进展吗?部署的应用程序中的iOS 10设备日志中省略了NSLogs和printf。您可以添加一个全局宏来替换它,直接调用os\u log
>“不添加值”我将其设置为“禁用”,它就可以工作了!空字段对我不起作用。你确定它在真正的iphone设备调试时起作用,而不是在模拟器上?如果我将其设置为“禁用”,在真正的iphone调试时,控制台无法进行NSLog。我现在检查了没有“禁用”的情况,它现在可以在设备上工作,但在模拟器上坏了,它现在再次显示了所有内容……是否有任何方法可以自动化此过程?这真的很烦人,我们必须记住像这样来回:/此解决方案将隐藏从Xcode 9开始的所有NSLog。要保留NSLog,请将禁用
替换为默认值
。这对我不起作用。部署的应用程序不会显示NSLog。我在iOS 10设备上使用xcode 8.1(在Mac 10.11上运行)。此解决方案将隐藏从xcode 9开始的所有NSLog。要保留NSLog,请用以下命令替换disable