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 Simulator上的输出:
hello from printf
答案 0 :(得分:226)
可能是您在Scheme环境变量中添加了属性“OS_ACTIVITY_MODE”:“disable”(隐藏了模拟器的OS输出)并忘记了它,现在正在真实设备上运行。
在Xcode 8中:
Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
仅添加OS_ACTIVITY_MODE
并进行检查(不添加值)
要点: 这是Xcode 8 + iOS10的一个错误,我们可以用这种方式解决它:
使用模拟器时,添加名称“OS_ACTIVITY_MODE”和值“禁用”并进行检查。
在真实设备上时,只需添加“OS_ACTIVITY_MODE”并进行检查(不添加值)。 您将在Xcode8控制台中看到NSLog。
答案 1 :(得分:27)
如果您查看Xcode 8 beta release notes,则会发现它显示:
调试在Simulator上运行的应用程序时,控制台中可能看不到日志。 解决方法:在Simulator.app中使用命令+ /在Console应用程序中打开系统日志以查看NSLog。 (26457535)
答案 2 :(得分:17)
实际执行了NSlog或print,但隐藏在许多其他控制台调试输出中以解决此问题 打开Xcode8:
Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
添加" OS_ACTIVITY_MODE"并将值设置为"禁用"并检查它。
点击关闭
<强> xcode9 强>
添加&#34; OS_ACTIVITY_MODE&#34;并将值设置为&#34;默认&#34;并检查它。
答案 3 :(得分:7)
我无法在真正的iOS 10设备中看到NSLog输出。如果您使用的是真实设备,则可以从Xcode(Shift + Command + 2)打开设备窗口并查看设备日志,但很难查看应用程序的日志,因为控制台显示来自系统和所有应用程序的日志。
(我正在使用Xcode 7,所以它可能不是Xcode的问题,但iOS 10问题)
答案 4 :(得分:6)
此外,请确保控制台实际上在Xcode中可见(即,确保右侧图标以蓝色突出显示,如下图所示)。升级Xcode后,它隐藏了控制台并向我展示了Variables视图。这使得它看起来NSLog()
工作不正常,而它确实工作正常,我只是看不到输出。
答案 5 :(得分:5)
嗯...好像属性&#34; OS_ACTIVITY_MODE&#34;:&#34;禁用&#34;防止NSlog显示在Xcode 9日志中。
在我的方案中取消选中此值可恢复我的日志。
答案 6 :(得分:1)
我正在使用Xcode 8,所以我也遇到了同样的问题。我通过在模拟器上添加value = disable
解决了这个问题,但在真机上我没有增加价值。
答案 7 :(得分:1)
对于将来遇到这种情况的任何人。 NSLog不会在iOS 10和iOS 11中打印到syslog的原因是由于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
,/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/
diagnostics
将uuidtext
和foldername.xarchive
内的所有项目复制到一个文件夹中(不要包含文件夹诊断或uuidtext内容)。
重命名该文件夹log
。
在Console.app中打开它或使用OSX工具log show <path to archive> --info --predicate <options>
:echo "<pre>";print_r($_REQUEST);
Array
(
[tx] => 3RA54961H14867235
[st] => Completed
[amt] => 29.00
[cc] => USD
[cm] =>
[item_number] =>
[sig] => scLH/oMz+Q0+arHSabEPju068IFOcpsnu5Mb77AkvDJ0S9LO0ZOjvLx68ojre4Y2ZWFB/dWNz3RtzCzwiY5p5zI8uRhbPoBZRwlIOTU8XRqif9Ni2g/E/Wc4LL6gs0fpo618MN4pFnbina2sYi6fyzhOQoS5se+4vBywzhG0X0E=
)
答案 8 :(得分:0)
NSLog
消息不再显示。最初,accepted answer为我提供了一种方法,可以使用控制台应用程序并启用模拟器(see Lucas' answer)来解决此问题。
在Action
下的控制台应用中,我尝试选择Include Debug Messages
并取消选择Include Info Messages
(因此控制台不会被系统消息淹没)。 NSLog
消息显示在Xcode的控制台窗口中,但未显示在控制台应用程序中。
我意识到必须有一种更直接的方式来disable
或启用(即default
)NSLogs
,这要归功于Coeur的回复this answer.的评论在我看来,这是最佳答案,因为将OS_ACTIVITY_MODE
设置为disable
或default
对初学者更有意义。