iOS 10不打印NSLog

Tyl*_*fer 88 xcode nslog ios ios10 xcode8

NSLogXcode 8.0 beta(8S128d)上没有打印任何内容.printf没有改变

这是我的代码:

NSLog(@"hello from NSLog");
printf("hello from printf");
Run Code Online (Sandbox Code Playgroud)

这是iOS 9模拟器上的输出:

2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
Run Code Online (Sandbox Code Playgroud)

这是iOS 10 Simulator上的输出:

hello from printf
Run Code Online (Sandbox Code Playgroud)

小智 227

可能是您在Scheme环境变量中添加了属性"OS_ACTIVITY_MODE":"disable"(隐藏模拟器的OS输出)并忘记了它,现在正在真实设备上运行.

在Xcode 8中:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
Run Code Online (Sandbox Code Playgroud)

只添加OS_ACTIVITY_MODE并检查它(不要添加值)

在此输入图像描述

在此输入图像描述

简介:这是Xcode 8 + iOS10的一个bug,我们可以用这种方式解决它:

  • 使用模拟器时,添加名称"OS_ACTIVITY_MODE"和值"禁用"并检查它.

  • 在真实设备上时,只需添加"OS_ACTIVITY_MODE"并进行检查(不要添加值).您将在Xcode8控制台中看到NSLog.

  • >"不添加值"我将其设置为"禁用",它的工作原理!空场对我不起作用. (4认同)
  • 无论如何要自动化这个过程?它真的很烦人,我们必须记得像这样来回走动:/ (2认同)
  • 此解决方案将隐藏从Xcode 9开始的所有NSLog.要保留NSLog,请将`disable`替换为`default`. (2认同)

Luc*_*cas 27

如果您查看Xcode 8 beta发行说明,您会发现它说:

调试在Simulator上运行的应用程序时,控制台中可能看不到日志.解决方法:在Simulator.app中使用命令+ /在Console应用程序中打开系统日志以查看NSLog.(26457535)

  • 我无法在真正的iOS 10设备中看到NSLog输出.如果您使用的是真实设备,则可以打开设备窗口(Shift + Command + 2)并查看设备日志,但很难查看调试应用程序日志,因为控制台会显示来自系统和应用程序的所有日志. (9认同)
  • 非常感谢你!并且谢谢Apple :-p (6认同)

Mil*_*iuM 18

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

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
Run Code Online (Sandbox Code Playgroud)

添加"OS_ACTIVITY_MODE"并将值设置为"禁用"并进行检查.

点击关闭

xcode9

添加"OS_ACTIVITY_MODE"并将值设置为"默认"并进行检查.

在此输入图像描述 在此输入图像描述

  • 此解决方案将隐藏从Xcode 9开始的所有NSLog.要保留NSLog,请将`disable`替换为`default`. (21认同)
  • 取消选中OS_ACTIVITY_MODE,它将显示调试NSlog (3认同)
  • 应该更新这个答案,以解释@Cœur对Xcode 9的更正. (3认同)
  • 默认不适用于Xcode10.1 (2认同)

kie*_*tux 7

我无法在真正的iOS 10设备中看到NSLog输出.如果您使用的是真实设备,则可以从Xcode(Shift + Command + 2)打开设备窗口并查看设备日志,但很难查看应用程序的日志,因为控制台显示来自系统和所有应用程序的日志.

(我正在使用Xcode 7,所以它可能不是Xcode的问题,但iOS 10问题)

  • 我不是在谈论从Xcode运行,但是,我在谈论从部署的应用程序打印的日志. (2认同)

Ste*_*ald 7

此外,确保控制台在Xcode中实际可见(即,确保右侧图标以蓝色突出显示,如下图所示).升级Xcode后,它隐藏了Console并向我展示了Variables视图.这使它看起来NSLog()没有正常工作,而它确实工作正常,我只是看不到输出.

在此输入图像描述


sha*_*ane 7

对于将来遇到此问题的任何人。NSLog 在 iOS 10 和 iOS 11 中没有打印到系统日志的原因是由于 Apple 更改为统一日志记录。

你可以在这里看到 WWDC 谈论它:https : //developer.apple.com/videos/play/wwdc2016/721/

此处的文档:https : //developer.apple.com/documentation/os/logging

从 10 开始,您应该使用 os_log 而不是 NSLog。

如何在磁盘上查找日志:https : //www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/

总而言之,日志所在的位置/var/db/diagnostics可以在以下位置找到 VM/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/

副本中的所有项目diagnostics,并uuidtext到一个文件夹(不包括文件夹诊断或uuidtext只是里面是什么)。

重命名该文件夹foldername.xarchive。

在 Console.app 中打开它或使用 OSX util log:log show <path to archive> --info --predicate <options>


Dav*_*sey 5

嗯......看起来像属性"OS_ACTIVITY_MODE":"禁用"PREVENTS NSlog出现在Xcode 9日志中.

在我的方案中取消选中此值可以恢复我的日志.