Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 10没有';不打印NSlog_Ios_Xcode_Nslog_Xcode8_Ios10 - Fatal编程技术网

iOS 10没有';不打印NSlog

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模拟器上的输

在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模拟器上的输出:

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


NSlog或print实际上是执行的,但隐藏在许多其他控制台调试输出中以解决此问题 打开Xcode8:

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