脑洞之旅:Xcode Log汉字解码

Posted 转转App技术团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脑洞之旅:Xcode Log汉字解码相关的知识,希望对你有一定的参考价值。

口水惹得祸

        经常看server端的同学通过命令行使用grep、sed 、awk查看线上日志,灵活的查询方式,酷炫的输出展示馋的客户端同学流口水。虽然我们大部分时间是使用断点调试,但NSLog大家用的也不少,随着代码规模的不断扩大,Xcode控制台中输出的信息也越来越多。激增的日志信息,往往让使用者很难找到属于自己的那部分。Xcode虽然也提供了一些日志搜索能力(下图),但是相较于grep+sed+awk的强大组合,还是有点太小儿科了。

要是能够用grep+sed+awk查询Xcode输出的日志就爽了,我们想。


拿什么查看你,我的日志

  • Xcode的控制台不支持对日志进行命令行搜索,直接放弃了。

  • 可以通过Devices(Xcode -> Window ->Devices)查看手机应用输出的日志,而且无论手机是否连接Xcode都可以查看。听起来都超预期了,但现实是残酷的,Devices的搜索能力和Xcode控制台如出一辙,放弃。

脑洞之旅:Xcode Log汉字解码

      找已有轮子的希望破灭后,我们思考,如果通过Terminal实时读取Xcode生成的日志文件,也能实现最初的目的。但是Xcode在连接真机调试时,log文件是存放在iPhone中的。只有使用模拟器进行调试时,日志才放在本地的~/Library/Logs/CoreSimulator/APP唯一标识(如:31C8CDFD-70AD-4E9E-BCFB-56AA2132D75A)/system.log:路径下。或通过Simulator ->Debug -> Open System Log直接查看它。

脑洞之旅:Xcode Log汉字解码        应用在真机中生成的log文件,有什么办法通过mac电脑进行实时读取吗?一番折腾发现,网上的方案多是通过在iPhone真机中搭建一个小型的HTTP Server,然后在mac端通过浏览器进行访问。这种方式一是繁琐,二是不能满足我们的需求,因为浏览器也不支持linux命令搜索呀。

        当然神器也不是没有,程序的世界,就是不缺轮子。国外有个软件叫ios Console号称The most awesome iOS console log viewer,这个软件确实牛B,能够实时读取iPhone真机中的log,但是还是不够牛,因为它提供的搜索能力还是太弱。如果你安装了Xcode,这个软件完全就是多余的。

        iOS Console虽然没能满足我们最初的设想:mac端查看+支持linux命令搜索。但是,它实时读取真机log的能力,开阔了我们的视野。这说明,除了Apple自己之外,第三方也是有能力实时读取iPhoen真机log文件的。

        读取日志哪家强,deviceconsole来帮忙。deviceconsole是git上一个有6年历史的悠久项目,虽然很小(仅300余行代码),但是,很好,很强大。因为它的核心功能就是通过mac的Terminal实时读取iPhone的日志信息。Terminal、日志信息、实时,这不正是我们一直追求的梦幻组合吗?!是的,就是这么easy。区区300行C代码,目标实现了。怀着激动的心情,我们在命令行中执行了deviceconsole程序,果然不负众望,而且还有超预期的颜色主题功能。

脑洞之旅:Xcode Log汉字解码

脑洞之旅:Xcode Log汉字解码

        但是,等等。好像有哪里不对。postName = "\134U7ea2\134U4e94..." 是什么东西,\M-e\M^P\M-/\M-e...又是什么东西,输出的信息怎么有这么多奇奇怪怪的符号。我们的汉字勒?这些奇怪的东西不会是汉字吧?恩,原来,故事刚刚开始。

以上是关于脑洞之旅:Xcode Log汉字解码的主要内容,如果未能解决你的问题,请参考以下文章

从华为P20开始的脑洞之旅:AI如何改变未来手机生活

用AI打破编解码器内卷,高通最新几篇顶会论文脑洞有点大

请问一个关于URL中汉字编码解码的问题

编码与解码

Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段

iOS xcode 代码片段