以前没太注意这个问题,最近遇到Xcode不太好调试的情况,所以想用日志来辅助调试。
场景就是真机中使用NSLog(…)、os_log(…)或者iOS 14里最新的Logger对象发送日志,但是在Mac控制台(Console)里,对应真机设备上的日志并不显示。
首先确定日志的确发送了。这可以通过观察Xcode中的调试输出确认。
如果在Xcode中实在不好确认,可以将调试语句换为导致App崩溃的代码,比如:
let i: Int? = nil
print("i: \(i!)")
然后运行App,观察在发送日志的执行路径上App是否发生崩溃,如果崩溃则表示原来发生日志的代码肯定执行了。
在确定日志发送后,我们还要确认连接到正确的真机上以及使用日志过滤器没有错误。
在以上皆确认无误后,我们可以尝试如下操作:
- 关闭Xcode,尝试直接在真机上运行App
- 断开真机与Mac的连接,重新连接再试一下
- 重启控制台程序试一下
最后要说的是,发送日志的代码应该没有问题,但相同的代码发送的日志有时却接收不到,这不得不让我怀疑是系统日志机制不太稳定。
小伙伴你们遇到真机日志收不到的情况么?欢迎讨论 😉