【问题标题】:iOS 10 doesn't print NSLogsiOS 10 不打印 NSLogs
【发布时间】:2016-10-19 14:07:48
【问题描述】:

在 Xcode 8.0 beta (8S128d) 上不会从 NSLog 打印任何内容。 printf 不变

这是我的代码:

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

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

hello from printf

【问题讨论】:

  • 我遇到了类似的问题。但是在 iOS 8.1 和 Xcode 8 中。我在这里检查了每一个答案。事实证明我做的一切都是正确的。没有任何帮助。所以,我关闭了设备并打开了它。有用。我在这里写了这个评论,以便它可以帮助其他面临类似问题的人

标签: ios xcode nslog xcode8 ios10


【解决方案1】:

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

在 Xcode 8 中:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables

只加OS_ACTIVITY_MODE并勾选(不要加值)

总结: 这是Xcode 8 + iOS10的bug,我们可以这样解决:

  • 使用模拟器时,添加名称“OS_ACTIVITY_MODE”和值“禁用”并勾选。

  • 在真机上,只添加“OS_ACTIVITY_MODE”并勾选(不要添加Value)。 您将在 Xcode8 控制台中看到 NSLog。

【讨论】:

  • >"Don't add the Value" 我将它设置为“禁用”并且它可以工作!空字段对我不起作用。
  • 你确定它在真正的iphone设备调试时有效,而不是模拟器?如果我把它设置为“禁用”,真正的iphone调试时控制台不能NSLog。
  • 我现在没有“禁用”检查过,它现在可以在设备上运行,但在模拟器上坏了,它现在又显示了一切......
  • 有没有办法自动化这个过程?我们必须记住像这样来回走动真的很烦人:/
  • 此解决方案将隐藏从 Xcode 9 开始的所有 NSLog。要保留 NSLog,请将 disable 替换为 default
【解决方案2】:

如果你检查Xcode 8 beta release notes,你会发现它说:

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

【讨论】:

  • 我在真正的 iOS 10 设备中也看不到 NSLog 输出。如果您使用的是真实设备,您可以打开设备窗口(Shift + Command + 2)并在那里查看设备日志,但很难查看调试应用日志,因为控制台会显示来自系统和应用的所有日志。
【解决方案3】:

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

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables

添加“OS_ACTIVITY_MODE”并将值设置为“禁用”并检查它。

点击关闭

xcode9

添加“OS_ACTIVITY_MODE”并将值设置为“默认”并检查它。

【讨论】:

  • 这对我不起作用。 NSLogs 不会显示在已部署的应用程序中。我在 iOS 10 设备上使用 xcode 8.1(在 Mac 10.11 上运行)。
  • 此解决方案将隐藏从 Xcode 9 开始的所有 NSLog。要保留 NSLog,请将 disable 替换为 default
  • 这个答案应该更新以说明@Cœur 对 Xcode 9 的更正。
【解决方案4】:

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

【讨论】:

  • 也可以用Shift + ⌘ + C Xcode 8.3.3版激活控制台
  • 多么棒的用户界面设计@Apple,充满了未知含义的图标
【解决方案5】:

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

(我使用的是 Xcode 7,所以可能不是 Xcode 的问题,而是 iOS 10 的问题)

【讨论】:

  • 我在 iOS 10 GM 下的设备窗口中没有看到我的应用程序的 NSLogs...您是否遇到同样的问题?
  • 我可以在 iOS 10 GM 的 Xcode 7 中看到日志,不再需要打开设备窗口。
  • 我不是在谈论从 Xcode 运行,而是在谈论从部署的应用程序打印的日志。
  • 这方面有进展吗?
  • NSLogs 和 printf's 从 iOS 10 设备日志中省略了部署的应用程序。您可以添加一个全局宏以直接调用os_log 来替换它。
【解决方案6】:

对于将来遇到此问题的任何人。 NSLog 在 iOS 10 和 iOS 11 中不打印到 syslog 的原因是 Apple 更改为 Unified Logging。

你可以在这里查看 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,可以在/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/找到VM

diagnosticsuuidtext 中的所有项目复制到一个文件夹中(不要仅包括文件夹诊断或uuidtext)。

重命名该文件夹foldername.xarchive

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

【讨论】:

  • 在 iOS 上呢?
【解决方案7】:

嗯...似乎属性 "OS_ACTIVITY_MODE": "disable" 阻止 NSlog 出现在 Xcode 9 日志中。

在我的方案中取消选中此值会恢复我的日志。

【讨论】:

    【解决方案8】:

    我使用的是 Xcode 8,所以我也遇到了同样的问题。而且我通过在模拟器上加value = disable解决了这个问题,但是在真机上我不加值。

    【讨论】:

    • 我在使用 Xcode 9 时遇到了一些问题。我插入了参数:OS_ACTIVITY_MODE 但它似乎不起作用...
    • 此解决方案将隐藏从 Xcode 9 开始的所有 NSLog。要保留 NSLog,请将 disable 替换为 default
    • 在我看来这是正确的答案。 OS_ACTIVITY_MODEdisabledefault 是直接的
    【解决方案9】:

    当我升级到 Xcode 9.1 + iOS 11.1 时,NSLog 消息不再显示。最初,accepted answer 为我提供了一种使用控制台应用程序并启用模拟器 (see Lucas' answer) 来解决此问题的方法。

    Action 下的控制台应用程序中,我尝试选择Include Debug Messages 并取消选择Include Info Messages(因此控制台不会被系统消息淹没)。 NSLog 消息出现在 Xcode 的控制台窗口中,但不在控制台应用程序中。

    我意识到必须有一种更直接的方式来disable 或启用(即defaultNSLogs 感谢 Coeur 对this answer. 的评论在我看来这是最好的答案,因为设置@987654332 @ 到 disabledefault 对初学者来说更有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多